home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #110 (1991-01)(Amiga User Group Deutschland e.V.).zip / Franz PD Disk #110 (1991-01)(Amiga User Group Deutschland e.V.).adf / Comic_Verwaltung / comic.haupt (.txt) < prev    next >
AmigaBASIC Source Code  |  1989-07-03  |  67KB  |  2,891 lines

  1. CLEAR,100000
  2.  ' (c) Andreas Zottmann
  3. anfang:
  4. DEFINT a-z
  5. true=-1:false=0 
  6. maxint=32767
  7. ersterDruck=true
  8. DIM muster(3)
  9. DECLARE FUNCTION Execute& LIBRARY
  10. DECLARE FUNCTION xOpen&  LIBRARY
  11. ig=0:cr$=CHR$(13):va=0:voraend=0:au=0:fehler=0:Pfad$="comp/":weg$="comdat/"
  12. GOSUB initialisierung
  13. GOSUB werteladen:aa=an: REM alte anzahl
  14. DIM um(97),dec(83),cod(43)
  15. FOR i=0 TO 97:READ q$:um(i)=VAL("&h"+q$):NEXT i
  16. FOR i=0 TO 43:READ q$:cod(i)=VAL("&h"+q$):NEXT i
  17. FOR i=0 TO 83:READ q$:dec(i)=VAL("&h"+q$):NEXT i
  18. FOR i=0 TO zmax-1:zust$(i)=RIGHT$(STR$(i),LEN(STR$(i))-1):NEXT i
  19. i=an\2+1
  20. MENU 1,0,1,"Project"
  21. MENU 1,1,1,"Eingabe"
  22. MENU 1,2,1,"neue Titel"
  23. MENU 1,3,1,"Bereiche sperren"
  24. MENU 1,4,1,"Datei erweitern"
  25. MENU 1,5,1,"Datei löschen"
  26. MENU 1,6,0,"             "
  27. MENU 1,7,1,"Programm beenden"
  28. MENU 2,0,1," Auswertung "
  29. MENU 2,1,1,"Vorhandene Hefte"
  30. MENU 2,2,1,"Fehlende Hefte"
  31. MENU 2,3,1,"Mehrfache"
  32. MENU 2,4,1,"Suchen"
  33. MENU 2,5,1,"Löschen"
  34. MENU 2,6,1,"Auswertung nach Zustand"
  35. MENU 2,7,1,"Ausdruck"
  36. MENU 3,0,1," Extras "
  37. MENU 3,1,1,"neue Auswertung"
  38. MENU 3,2,1,"Druckereinstellung"
  39. MENU 3,3,1,"Datensicherung"
  40. MENU 3,4,1,"Datenrekonstruktion"
  41. MENU 3,5,1,"Pfadwechsel"
  42. MENU 4,0,0,""
  43. IF an=0 THEN 
  44.   MENU 1,1,0:MENU 1,3,0:MENU 1,4,0:MENU 1,5,0
  45.   MENU 2,0,0
  46.   MENU 3,1,0
  47.   MENU 3,3,0
  48. END IF   
  49. haupt:
  50.   dg=an:au=0 
  51.   CLS
  52.   LOCATE 3,12:PRINT "           C o m i c - V e r w a l t u n g"
  53.   LOCATE 7,30:PRINT "von Andreas Zottmann"
  54.   LOCATE 12,34:PRINT "1.Project"
  55.   LOCATE 14,34:PRINT "2.Auswertung"
  56.   LOCATE 16,34:PRINT "3.Extras"
  57.   LOCATE 18,34:PRINT "4.Programm beenden"
  58.   q=0
  59.   WHILE q<1 OR q>4 OR (an=0 AND q=2)
  60.     taste q:q=q-ASC("0")
  61.     IF men0>0 THEN q=men1:ON men0 GOTO projvert,auswvert,extvert
  62.   WEND
  63.  ON q GOTO project,auswertung,extras,abmelden
  64. project:
  65. CLS
  66. LOCATE 5,34:PRINT "1. Eingabe"
  67. LOCATE 7,34:PRINT "2. neue Titel"
  68. LOCATE 9,34:PRINT "3. Bereiche sperren"
  69. LOCATE 11,34:PRINT "4. Datei erweitern"
  70. LOCATE 13,34:PRINT "5. Datei löschen"
  71. LOCATE 15,34:PRINT "6. Hauptmenü"
  72. q=0
  73. WHILE q<1 OR q>6 OR(an=0 AND q<>2 AND q<>6)
  74.   taste q
  75.   IF q=129 THEN haupt
  76.   q=q-ASC("0")
  77. WEND
  78. projvert:
  79.   ON q GOTO eingabe,neuetitel,bereichesperren,dateierweitern,dateiloeschen,haupt,abmelden
  80.  
  81. eingabe:n$="":nn$=CHR$(0):ver=true:IF i>an OR i<1 THEN i=an\2+1
  82. CLS:LOCATE 1,33:PRINT "E i n g a b e"
  83. LINE (12,11)-(72,43),2,bf
  84. LINE (11,10)-(73,44),3,b
  85. LINE (12,27)-(72,27),3
  86. LINE (42,11)-(42,44),3
  87. LINE (26,16)-(26,23),3
  88. LINE (26,31)-(26,38),3
  89. LINE (57,17)-(57,24),3
  90. LINE (57,30)-(57,37),3
  91. LINE (26,15)-(30,19),3
  92. LINE (26,15)-(22,19),3
  93. LINE (26,39)-(30,35),3
  94. LINE (26,39)-(22,35),3
  95. LINE (57,16)-(61,20),3
  96. LINE (57,16)-(53,20),3
  97. LINE (57,13)-(61,17),3
  98. LINE (57,13)-(52,17),3
  99. LINE (57,38)-(61,34),3
  100. LINE (57,38)-(53,34),3
  101. LINE (57,41)-(61,37),3
  102. LINE (57,41)-(53,37),3
  103.  
  104. namelesen:xakt=1
  105. LOCATE 4,12:PRINT "Name :   "+SPACE$(30):LOCATE 4,21:PRINT n$
  106. q=0:nurCr=true
  107. WHILE q<>13
  108. 310 
  109. taste q
  110. IF q=129 THEN CLOSE 1:GOTO haupt
  111.   IF mausx>11 AND mausx<73 AND mausy>10 AND mausy<44 THEN
  112.     IF mausx<42 AND mausy<27 THEN
  113.       i=i-1
  114.     ELSEIF mausy<27 AND an>10 THEN
  115.       i=i-10
  116.     ELSEIF mausx>42 AND an>10 THEN
  117.       i=i+10
  118.     ELSEIF mausx<42 THEN
  119.       i=i+1
  120.     ELSE
  121.       GOTO 310
  122.     END IF
  123.     IF i<1 THEN i=an+i :ELSE IF i>an THEN i=i-an
  124.     n$=t$(in(i)):nn$=n$
  125.     ver=true:nurCr=true
  126.     GOTO namelesen
  127.   ELSEIF q=28 OR q=29 THEN
  128.     IF q=29 THEN i=i+1 :ELSE i=i-1
  129.     IF i<1 THEN i=an+i :ELSE IF i>an THEN i=i-an
  130.     n$=t$(in(i)):nn$=n$
  131.     ver=true:nurCr=true
  132.     GOTO namelesen
  133.   ELSEIF q<>13 AND mausx<0 THEN  
  134.     IF q=31 AND xakt>1 THEN
  135.       xakt=xakt-1
  136.     ELSEIF q=30 AND xakt<=LEN(n$) THEN
  137.       xakt=xakt+1
  138.     ELSEIF q=8 AND  n$<>"" AND xakt>1 THEN
  139.       n$=LEFT$(n$,xakt-2)+RIGHT$(n$,LEN(n$)-xakt+1):xakt=xakt-1:l$=" "
  140.       nurCr=false
  141.     ELSEIF q=127 AND n$<>"" AND xakt<= LEN(n$) THEN
  142.       n$=LEFT$(n$,xakt-1)+RIGHT$(n$,LEN(n$)-xakt):l$=" "
  143.       nurCr=false
  144.     ELSEIF q=8 OR q=127 OR LEN(n$)=30 OR q=31 OR q=30 THEN
  145.       GOTO 320
  146.     ELSE
  147.       n$=LEFT$(n$,xakt-1)+CHR$(q)+RIGHT$(n$,LEN(n$)-xakt+1)
  148.       xakt=xakt+1
  149.       nurCr=false
  150.     END IF
  151.     ver=true
  152.     LOCATE 4,21:PRINT LEFT$(n$,xakt-1);
  153.     COLOR 2
  154.     PRINT MID$(n$,xakt,1);
  155.     COLOR 1
  156.     IF xakt<LEN(n$) THEN PRINT RIGHT$(n$,LEN(n$)-xakt);
  157.     PRINT l$;:l$=""
  158.     320 
  159.   END IF
  160. WEND
  161. IF ver THEN CLOSE 1
  162. IF NOT(nurCr) THEN
  163.   n$=LEFT$(n$,xakt-1)
  164.   LOCATE 4,21+LEN(n$):PRINT SPACE$(30-LEN(n$))
  165. END IF
  166. IF n$="" THEN namelesen
  167. IF n$<>nn$ THEN
  168.   q$=n$:GOSUB suche
  169.   IF i<1 THEN
  170.     nn$=CHR$(0)
  171.     LOCATE 18,21:PRINT "Titel nicht vorhanden"
  172.     LOCATE 19,25:PRINT "(1. Namen ändern)"
  173.     LOCATE 20,25:PRINT "(2. neuen Namen aufnehmen)"
  174.     q=0
  175.     WHILE q<1 OR q>2
  176.       taste q
  177.       IF q=129 THEN CLOSE 1:GOTO haupt
  178.       q=q-ASC("0")
  179.     WEND  
  180.     LOCATE 18,21:PRINT SPACE$(21)
  181.     LOCATE 19,25:PRINT SPACE$(17)
  182.     LOCATE 20,25:PRINT SPACE$(26)
  183.     IF q=2 THEN project :ELSE i=(o+u)\2:GOTO namelesen
  184.   ELSE
  185.     n$=t$(in(i))
  186.   END IF
  187. END IF  
  188. index=in(i)
  189. IF ver THEN 
  190.   oeffne weg$+t$(index),1,satzl,0
  191.   FIELD 1,satzl AS d$
  192.   IF j(index)=-1 THEN LOCATE 6,12:PRINT SPACE$(20)
  193.   laenge=LOF(1)/satzl
  194.   ver=false
  195. END IF
  196. IF j(index)=-1 THEN
  197.   o=1
  198. ELSE
  199.   j$=RIGHT$(j$,2)          
  200. 410 
  201.   LOCATE 6,12:PRINT "Jahrgang (jj)   ";:lies j$,4
  202.   IF ASC(j$+" ")=129 THEN CLOSE 1:GOTO haupt
  203.   IF (VAL(j$)=0 AND INSTR("00",j$)=0) OR VAL(j$)>99 OR VAL(j$)<0 OR INT(VAL(j$))< VAL(j$) OR j$="" THEN 410
  204.   IF VAL(j$)<j(index) THEN j$=STR$(100+VAL(j$))
  205.   o=0
  206. END IF
  207. nr=0
  208. WHILE nr<1 OR (o=0 AND nr>maxnr(index))
  209.   nr$="":LOCATE 8,19:PRINT SPACE$(10)
  210.   LOCATE 8,12:INPUT "Nummer ", nr$
  211.   IF ASC(nr$+" ")=129 THEN CLOSE 1:GOTO haupt
  212.   IF LEN(nr$)<6 THEN
  213.     long&=VAL(nr$)
  214.     IF long&<=maxint THEN nr=long&
  215.   END IF
  216. WEND
  217. IF zmax=1 THEN
  218.   z=0
  219. ELSE  
  220.   z$=""
  221.   WHILE z$<"0" OR z$>zmax$ OR LEN(z$)>1
  222.     LOCATE 10,12:PRINT "Zustand (0-"zmax$") ";:INPUT "",z$
  223.     IF ASC(z$+" ")=129 THEN CLOSE 1:GOTO haupt
  224.   WEND
  225.   z=VAL(z$)
  226. END IF
  227. an$=""
  228. WHILE VAL(an$)<1 OR VAL(an$)>5
  229.   an$="1":LOCATE 12,12:PRINT "Anzahl  ";:lies an$,2
  230.   IF ASC(an$+" ")=129 THEN CLOSE 1:GOTO haupt
  231. WEND
  232. IF o=1 THEN
  233.   l=nr
  234. ELSE  
  235.   l=maxnr(index)*(VAL(j$)-j(index))+nr
  236. END IF
  237. IF l> laenge THEN CLOSE 1:GOTO 4570
  238. GET 1,l
  239. decodiere d$
  240. IF dat(0)>0 THEN
  241.   FOR j=0 TO zmax:dat(j)=0:NEXT j
  242.   z(zmax,index)=z(zmax,index)+1
  243. END IF
  244. IF geszahl>0 THEN z(zmax+1,index)=z(zmax+1,index)+VAL(an$) :ELSE IF VAL(an$)>1 THEN z(zmax+1,index)=z(zmax+1,index)+VAL(an$)-1
  245. dat(z+1)=dat(z+1)+VAL(an$):codiere q$
  246. LSET d$=q$:PUT 1,l
  247. z(z,index)=z(z,index)+VAL(an$)
  248. dr(index)=dr(index) OR 4:dr(0)=dr(0)OR 4
  249. LOCATE 20,24:PRINT "weiter (Cr) oder Ende (F10)"
  250. q=0
  251. WHILE q<>13 AND q<>138 AND q<>129
  252.   taste q
  253. WEND
  254. IF q=138 OR q=129 THEN CLOSE 1:GOTO haupt
  255. nn$=n$:LOCATE 20,24:PRINT SPACE$(27):GOTO namelesen
  256.  
  257. auswertung:
  258. CLS
  259. LOCATE 3,25:PRINT "      A u s w e r t u n g"
  260. LOCATE 5,25:PRINT "1.Auflisten vorhandener Hefte"
  261. LOCATE 7,25:PRINT "2.Auflisten fehlender Hefte"
  262. LOCATE 9,25:PRINT "3.Auflisten von Mehrfachen"
  263. LOCATE 11,25:PRINT "4.Suchen"
  264. LOCATE 13,25:PRINT "5.Löschen"
  265. LOCATE 15,25:PRINT "6.Auswertung nach Zustand"
  266. LOCATE 17,25:PRINT "7.Ausdruck"
  267. LOCATE 19,25:PRINT "8.Hauptmenü"
  268. q=0
  269. WHILE q<1 OR q>8
  270.   taste q     
  271.   IF q=129 THEN haupt
  272.   q=q-ASC("0")
  273. WEND
  274. auswvert:
  275. ON q GOTO auflisten,fehlende,auflisten,heftsuchen,heftloeschen,zustand,ausdruck,haupt
  276. auflisten:
  277. wahl=(q+1)/2:GOSUB 4650
  278. gz=0:stw=0
  279. oeffne (weg$+t$(index)),1,satzl,0:r=1
  280. FIELD 1,satzl AS d$
  281. laenge=LOF(1)/satzl
  282. l=1
  283. titelleiste 1
  284. WHILE l<=laenge
  285.   GET 1,l 
  286.   decodiere d$
  287.   IF dat(0)=0 AND geszahl>wahl-1 THEN
  288.     jahreszahl l,j,nr
  289.     r=r+2:gz=gz+geszahl:IF wahl=2 THEN gz=gz-1
  290.     IF r>21 THEN 
  291.  1100 taste q:IF men0>0 THEN 1100
  292.       IF q=129 THEN GOSUB startwert:titelleiste 1:GOTO 1160
  293.       CLS:titelleiste 1:r=3
  294.     END IF
  295.     LOCATE r,1:PRINT t$(index)
  296.     LOCATE r,31:IF j(index)>-1 THEN PRINT USING"#### ";j;
  297.     PRINT USING "#####";nr;
  298.     PRINT SPACE$(bestZust*3);
  299.     FOR j=bestZust+1 TO zmax:
  300.       IF dat(j)>0 THEN PRINT  USING "###";dat(j); :ELSE PRINT "   ";
  301.     NEXT:PRINT USING "######";geszahl;
  302.   END IF
  303.   l=l+1
  304.   IF ASC(INKEY$+" ")=129 THEN GOSUB startwert:titelleiste 1
  305. 1160 
  306. WEND
  307. CLOSE 1
  308. LOCATE 23,5:PRINT "Taste";:taste q
  309. IF stw=0 THEN
  310.   CLS
  311.   LOCATE 10,29
  312.   IF gz=1 THEN PRINT "Es ist insgesamt " :ELSE PRINT "Es sind"
  313.   LOCATE 12,34:IF gz=1 THEN PRINT "ein" :ELSE PRINT gz
  314.   LOCATE 14,34:IF wahl=1 THEN PRINT "Heft"; :ELSE PRINT "Mehrfache";
  315.   IF gz<>1 AND wahl=1 THEN PRINT "e"
  316.   IF gz=1 AND wahl=2 THEN PRINT "s"
  317.   LOCATE 16,30:PRINT " vorhanden."
  318.   LOCATE 20,5:PRINT "Taste"
  319.   taste q
  320. END IF
  321. GOTO haupt
  322. startwert:
  323. CLS
  324. LOCATE 22,10:PRINT "CR: Anfangswert für das Auflisten ändern    F10: Hauptmenü"
  325. q=0
  326. WHILE q<>13 AND q<>138 AND q<>129
  327.   taste q
  328. WEND
  329. IF q=138 OR q=129 THEN CLOSE 1:RETURN haupt
  330. stw=1
  331. LOCATE 5,5:PRINT "Anfangswert"  
  332. jahreszahl laenge,j,nr
  333. IF j(index)>-1 THEN
  334.   q$=STR$(j(index)):q$=RIGHT$(q$,LEN(q$)-1)
  335.   LOCATE 6,7:PRINT "Jahrgang ";j(index);" -";j
  336. st1: LOCATE 6,26:lies q$,4
  337.   j=VAL(q$)
  338.   IF (j=0 AND INSTR("00",q$)=0) OR j>99 OR j<0 OR q$="" THEN st1
  339.   IF j<j(index) THEN j=j+100
  340.   IF (j-j(index))*maxnr(index)>laenge THEN st1
  341. END IF     
  342. q$="1":LOCATE 8,7:PRINT "Nummer "
  343. st2: LOCATE 8,15:lies q$,5
  344.  long&=VAL(q$)
  345.  IF long&>maxint THEN st2 :ELSE nr=long&
  346. IF nr<1 OR nr>laenge THEN st2
  347. IF j(index)>-1 AND(nr>maxnr(index) OR (j-j(index))*maxnr(index)+nr>laenge) THEN st2
  348. IF j(index)>-1 THEN
  349.   l=(j-j(index))*maxnr(index)+nr    
  350. ELSE
  351.   l=nr
  352. END IF
  353. CLS:r=1    
  354. RETURN  
  355. fehlende:
  356. GOSUB 4650
  357. oeffne (weg$+t$(index)),1,satzl,0:r=1
  358. FIELD 1,satzl AS d$
  359. laenge=LOF(1)/satzl
  360. l=1
  361. titelleiste 2
  362. WHILE l<=laenge
  363.   GET 1,l 
  364.   decodiere d$
  365.   IF dat(0)=0 AND geszahl=0 THEN
  366.     jahreszahl l,j,nr
  367.     r=r+2
  368.     IF r>21 THEN
  369.  1450 taste q:IF men0>0 THEN 1450
  370.       IF q=129 THEN GOSUB startwert:titelleiste 2:GOTO 1510
  371.       CLS:titelleiste 2:r=3
  372.     END IF
  373.     LOCATE r,1:PRINT t$(index)
  374.     IF j(index)>=0 THEN LOCATE r,32:PRINT USING"###"; j
  375.     LOCATE r,36:PRINT USING"######";nr
  376.   END IF
  377.   l=l+1
  378.   IF ASC(INKEY$+" ")=129 THEN GOSUB startwert:titelleiste 2
  379. 1510 
  380. WEND
  381. CLOSE 1
  382. LOCATE 23,5:PRINT "Taste";
  383. taste q
  384. GOTO haupt
  385. heftsuchen:
  386. GOSUB 4650:o=0
  387. CLS
  388. IF j(index)>-1 THEN
  389.   j$=""
  390.   WHILE LEN (j$)>2 OR (VAL(j$)=0 AND INSTR("00",j$)=0) OR j$=""
  391.     LOCATE 7,14:PRINT "Jahrgang (jj) ";:INPUT "",j$
  392.     IF ASC(j$+" ")=129 THEN haupt
  393.   WEND
  394.   IF VAL(j$)<j(index) THEN j$=STR$(100+VAL(j$))
  395.   o=0
  396. ELSE
  397.   o=1
  398. END IF
  399. nr$="":nr=0
  400. WHILE nr<1 OR (o=0 AND nr>maxnr(index)) 
  401.   LOCATE 9,14:PRINT "Nummer  ";:INPUT "",nr$
  402.   IF ASC(nr$+" ")=129 THEN haupt
  403.   IF LEN(nr$)<6 THEN
  404.     long&=VAL(nr$)
  405.     IF long&<=maxint THEN nr=long&
  406.   END IF
  407. WEND
  408. IF o=1 THEN l=nr:j$="" :ELSE l=maxnr(index)*(VAL(j$)-j(index))+nr
  409. oeffne (weg$+t$(index)),1,satzl,0
  410. FIELD 1,satzl AS d$
  411. laenge=LOF(1)/satzl
  412. IF l>laenge THEN
  413.   GOSUB 2160
  414. ELSE
  415.   GET 1,l
  416.   decodiere d$
  417.   IF dat(0)>0 THEN
  418.     GOSUB 2160
  419.   ELSE
  420.     CLS:LOCATE 4,9:PRINT t$(index)
  421.     IF o=0 THEN LOCATE 8,14: PRINT  "Jahrgang " ;RIGHT$(j$,2)
  422.     LOCATE 10,14:PRINT  "Nummer    "; nr$
  423.     schreibezustaende
  424.   END IF
  425. END IF
  426. CLOSE 1
  427. LOCATE 22,14:PRINT "weiter (Cr) oder Ende (F10)"
  428. q=0
  429. WHILE q<>13 AND q<>138 AND q<>129
  430.   taste q
  431. WEND
  432. IF q=13 THEN heftsuchen
  433. GOTO haupt
  434. 2160 
  435.  CLS
  436.  LOCATE 4,9:PRINT  t$(index) 
  437.  LOCATE 9,19:PRINT RIGHT$(j$,2)
  438.  LOCATE 9,26:PRINT nr$
  439.  LOCATE 14,24:PRINT "existiert nicht "
  440. RETURN
  441. heftloeschen: 
  442. GOSUB 4650
  443. CLS
  444. IF j(index)>-1 THEN
  445.   j$=""
  446.   WHILE (VAL(j$)=0 AND INSTR("00",j$)=0) OR j$=""
  447.     LOCATE 7,14:PRINT "Jahrgang (jj)  ";:lies j$,2
  448.     IF ASC(j$+" ")=129 THEN haupt
  449.   WEND
  450.   IF VAL(j$)<j(index)THEN j$=STR$(100+VAL(j$))
  451.   o=0
  452. ELSE
  453.   o=1
  454. END IF
  455. nr$="":nr=0
  456. WHILE nr<1
  457.   LOCATE 9,14:PRINT "Nummer  ";:INPUT "",nr$
  458.   IF ASC(nr$+" ")=129 THEN haupt
  459.   IF LEN(nr$)<6 THEN
  460.     long&=VAL(nr$)
  461.     IF long&<=maxint THEN nr=long&
  462.   END IF
  463. WEND
  464. IF o=1 THEN l=nr :ELSE l=maxnr(index)*(VAL(j$)-j(index))+nr
  465. oeffne (weg$+t$(index)),1,satzl,0
  466. FIELD 1,satzl AS d$
  467. laenge=LOF(1)/satzl
  468. IF l>laenge THEN
  469.   GOSUB 2610
  470. ELSE
  471.   GET 1,l
  472.   decodiere d$
  473.   IF dat(0)>0 THEN
  474.     GOSUB 2610
  475.   ELSEIF geszahl=0 THEN
  476.     LOCATE 22,14:PRINT "Bestand gleich Null"
  477.     taste q
  478.   ELSE
  479.     schreibezustaende
  480.     IF geszahl=1 OR zmax=1 THEN  
  481.       zust=bestZust
  482.       io=1
  483.       GOSUB 2615         
  484.     ELSE   
  485.       LOCATE 16,14:PRINT "Zustand :"
  486.       q=-1
  487.       WHILE q<0 OR q>zmax-1
  488.         taste q
  489.         IF q=129 THEN CLOSE 1:GOTO haupt
  490.         q=q-ASC("0")
  491.       WEND   
  492.       IF dat(q+1)=0 THEN
  493.         GOSUB 2610
  494.       ELSEIF dat(q+1)=1 THEN
  495.         zust=q:io=1
  496.         GOSUB 2615
  497.         IF q=13 THEN z(zmax+1,index)=z(zmax+1,index)-1
  498.       ELSE
  499.         LOCATE 17,14:PRINT "Wieviele Hefte(1 -";dat(q+1);")"
  500.         az$=""
  501.         WHILE VAL (az$)<1 OR VAL(az$)>dat(q+1)OR VAL(az$)<>INT(VAL(az$))
  502.           LOCATE 17,36:INPUT "",az$
  503.           IF ASC(az$+" ")=129 THEN CLOSE 1:GOTO haupt
  504.         WEND                     
  505.         io=VAL(az$):zust=q
  506.         GOSUB 2615
  507.         IF q=13 THEN
  508.           IF VAL(az$)=geszahl THEN
  509.             z(zmax+1,index)=z(zmax+1,index)-geszahl+1
  510.           ELSE
  511.             z(zmax+1,index)=z(zmax+1,index)-VAL(az$)
  512.           END IF
  513.         END IF             
  514.       END IF
  515.     END IF
  516.   END IF
  517. END IF
  518. CLOSE 1:GOTO haupt
  519. 2610 
  520.  LOCATE 18,14:PRINT "Heft nicht vorhanden (Taste )"
  521.  taste q
  522. RETURN     
  523. 2615 
  524.  LOCATE 18,14:PRINT "cr: löschen, f10: Hauptmenü"
  525.  q=0
  526.  WHILE q<>13 AND q<>138 AND q<>129
  527.    taste q
  528.  WEND  
  529.  IF q=13 THEN
  530.    dat(zust+1)=dat(zust+1)-io
  531.    codiere q$
  532.    LSET d$=q$:PUT 1,l
  533.    dr(0)=dr(0)OR 4:dr(index)=dr(index)OR 4
  534.    z(zust,index)=z(zust,index)-io
  535.  END IF
  536. RETURN
  537. zustand:
  538. CLS:au=0
  539. LOCATE 4,26:PRINT "Auswertung nach Zustand"
  540. LOCATE 7,26:PRINT "1.Auswertung einer Sorte"
  541. LINE (194,44)-(398,60),1,b
  542. LOCATE 10,26:PRINT "2.Auswertung einer Auswahl"
  543. LINE (194,68)-(414,84),1,b
  544. LOCATE 13,26:PRINT "3.Gesamtauswertung"
  545. LINE (194,92)-(350,108),1,b
  546. q=0
  547. WHILE q<1 OR q>3
  548.   taste q
  549.   IF q=129 THEN haupt
  550.   q=q-ASC("0")
  551.   IF mausx>194 THEN
  552.     IF mausx<399 AND mausy>43 AND mausy<61 THEN
  553.       q=1
  554.     ELSEIF mausx<415 AND mausy>67 AND mausy<85 THEN
  555.       q=2
  556.     ELSEIF mausx<351 AND mausy>91 AND mausy<109 THEN
  557.       q=3
  558.     END IF
  559.   END IF
  560. WEND
  561. o=0
  562. IF q=1 THEN
  563.   GOSUB 4650
  564.   anzahl=0
  565.   FOR j=0 TO zmax-1
  566.     a(j)=z(j,index)
  567.     anzahl=anzahl+a(j)
  568.   NEXT j
  569.   gesamt=z(zmax,index):doppelt=z(zmax+1,index)
  570.   fehlend=gesamt-anzahl+doppelt
  571.   q$=t$(index)
  572. ELSE
  573.   IF q=2 THEN GOSUB 8580
  574.   IF au=2 THEN GOSUB 4650
  575.   FOR j=0 TO zmax-1:a(j)=0:NEXT j:gesamt=0:doppelt=0:anzahl=0
  576.   CLS:LOCATE 5,5:PRINT "Auswertung läuft"
  577.   FOR i=1 TO an
  578.     IF au=0 OR ((dr(i)AND 1)>0) THEN
  579.       FOR j=0 TO zmax-1:a(j)=a(j)+z(j,i):NEXT j:gesamt=gesamt+z(zmax,i):doppelt=doppelt+z(zmax+1,i)
  580.     END IF
  581.   NEXT i
  582.   FOR j=0 TO zmax-1:anzahl=anzahl+a(j):NEXT:fehlend=gesamt-anzahl+doppelt     
  583.   IF au>0 THEN q$="Auswahl" :ELSE q$="Gesamtauswertung"
  584. END IF
  585. CLS:GOSUB 6000:au=0
  586. IF gesamt=0 THEN taste q:GOTO haupt
  587. LOCATE 20,5:PRINT "CR : graphische Auswertung   F10 : Hauptmenü"
  588. q=0
  589. WHILE q<>13 AND q<>138 AND q<>129
  590.   taste q
  591. WEND  
  592. IF q=138 OR q=129 THEN haupt     
  593. CLS
  594. LOCATE 1,1:PRINT "Zustand"
  595. IF anzahl>0 THEN
  596.   maximum=0
  597.   FOR j=0 TO zmax-1
  598.     IF a(j)>maximum THEN maximum=a(j)
  599.   NEXT j 
  600.   LOCATE 2,1:PRINT USING"###%";100*maximum/anzahl
  601.   LOCATE 7,1:PRINT USING"###%";100*maximum/anzahl*0.75
  602.   LOCATE 12,1:PRINT USING"###%";100*maximum/anzahl*0.5
  603.   LOCATE 17,1:PRINT USING"###%";100*maximum/anzahl*0.25     
  604.   breite=(400-(zmax-1)*5)\zmax
  605.   hoehe=150
  606.   FOR j=0 TO zmax-1
  607.     x=30+j*(breite+5)                    
  608.     y=INT(12+hoehe*(1-(a(j)/maximum)))
  609.     ON j+1 GOSUB mus1,mus2,mus3,mus4,mus5,mus6,mus7,mus8,mus9,mus10
  610.     PATTERN ,muster
  611.     LINE (x,12+hoehe)-(x+breite,y),j MOD 3+1,bf
  612.     LOCATE 22,x\8+2:PRINT USING"###%";a(j)/anzahl*100;
  613.   NEXT j
  614.   GOSUB mus11:PATTERN ,muster
  615. END IF
  616. LOCATE 1,57:PRINT "Anzahl"
  617. y=INT(12+hoehe*(1-(gesamt-fehlend)/gesamt))
  618. LINE (450,12+hoehe)-(510,12),,b
  619. LINE (450,12+hoehe)-(510,y),1,bf
  620. LOCATE 22,57:PRINT  USING "###.##%";100*(gesamt-fehlend)/gesamt;
  621. IF anzahl>0 THEN
  622.   LOCATE 1,66:PRINT "Doppelte"
  623.   y=INT(12+hoehe*(1-doppelt/anzahl))
  624.   LINE (520,12+hoehe)-(580,12),,b
  625.   LINE (520,12+hoehe)-(580,y),,bf
  626.   LOCATE 22,66:PRINT USING "###.##%";100*doppelt/anzahl;
  627. END IF
  628. LOCATE 23,1:PRINT "Taste";:taste q:GOTO haupt 
  629. REM muster
  630. mus1:
  631. muster(0)=&H8888
  632. muster(1)=&H4444
  633. muster(2)=&H2222
  634. muster(3)=&H1111
  635. RETURN
  636. mus2:
  637. muster(3)=&H8888
  638. muster(2)=&H4444
  639. muster(1)=&H2222
  640. muster(0)=&H1111
  641. RETURN
  642. mus3:
  643. muster(0)=&Hcccc
  644. muster(1)=&H6666
  645. muster(2)=&H3333
  646. muster(3)=&H9999
  647. RETURN
  648. mus4:
  649. muster(0)=&Hffff
  650. muster(1)=&H9999            
  651. muster(2)=&H9999
  652. muster(3)=&Hffff
  653. RETURN
  654. mus5:
  655. muster(0)=INT(32767-65536*RND)
  656. muster(1)=INT(32767-65536*RND)
  657. muster(2)=INT(32767-65536*RND)
  658. muster(3)=INT(32767-65536*RND)
  659. RETURN                          
  660. mus6:
  661. muster(0)=&H8888
  662. muster(1)=&Hc183
  663. muster(2)=&Hc183
  664. muster(3)=&H1111
  665. RETURN
  666. mus7:
  667. muster(0)=&H8181
  668. muster(1)=&H4242
  669. muster(2)=&H2424
  670. muster(3)=&H1818
  671. RETURN
  672. mus8:
  673. muster(0)=&Hcccc
  674. muster(1)=&H3333
  675. muster(2)=&Hcccc
  676. muster(3)=&H3333
  677. RETURN
  678. mus9:
  679. muster(0)=&H3c0
  680. muster(1)=&Hc30
  681. muster(2)=&H300c
  682. muster(3)=&Hc003
  683. RETURN
  684. mus10:
  685. muster(0)=&Hffff
  686. muster(1)=&H101
  687. muster(2)=&Hffff
  688. muster(3)=&H101
  689. RETURN
  690. mus11:
  691. muster(0)=&Hffff
  692. muster(1)=&Hffff
  693. muster(2)=&Hffff
  694. muster(3)=&Hffff
  695. RETURN
  696.  
  697. extras:
  698. CLS
  699. LOCATE 3,25:PRINT "       E x t r a s      "
  700. LOCATE 5,25:PRINT "1. neue Auswertung"
  701. LOCATE 7,25:PRINT "2. Druckereinstellung"
  702. LOCATE 9,25:PRINT "3. Datensicherung"
  703. LOCATE 11,25:PRINT "4. Datenrekonstruktion"
  704. LOCATE 13,25:PRINT "5. Pfadwechsel"
  705. LOCATE 15,25:PRINT "6. Hauptmenü"
  706. q=0
  707. WHILE q<1 OR q>6 OR(an=0 AND (q=1 OR q=3))
  708.   taste q
  709.   IF q=129 THEN haupt
  710.   q=q-ASC("0")
  711. WEND
  712. extvert:
  713. ON q GOTO neueausw,druckereinst,datensich,datenrek,pfadwechsel,haupt
  714. neuetitel:
  715. CLS
  716. IF an = mq THEN
  717.   LOCATE 20,4:PRINT "Es ist kein Platz mehr frei.Bitte erst abmelden (Punkt 4 im Haupt-"
  718.   LOCATE 21,4:PRINT "menü), dann Programm neu starten."
  719.   LOCATE 23,10:PRINT "(Taste)";:taste q 
  720.   GOTO haupt
  721. END IF  
  722. tt$=""
  723. 3005 
  724. LOCATE 7,17:PRINT "Titel : ";:lies tt$,30
  725. IF ASC(tt$+" ")=129 THEN haupt
  726. IF LEN(tt$)<1 OR INSTR(tt$,":")>0 OR INSTR(tt$,"/")>0 OR INSTR(tt$,"#?")>0 THEN 3005
  727. q$=tt$:GOSUB suche
  728. IF i>-1 THEN
  729.   LOCATE 22,9:PRINT "Titel ist schon vorhanden (Taste)"
  730.   taste q
  731.   IF q=129 THEN haupt
  732.   CLS:GOTO 3005
  733. END IF
  734. fehler=0
  735. ON ERROR GOTO fehlerausw
  736. OPEN weg$+tt$ AS 1 LEN=satzl
  737. IF fehler=61 THEN
  738.   CLOSE 1
  739.   LOCATE 22,9:PRINT "Die Diskette ist voll. Bitte zuerst eine neue anlegen, dann weitermachen (Taste)."
  740.   taste q
  741.   fehler=0
  742.   GOTO haupt
  743. END IF
  744. IF fehler=74 THEN CLOSE 1:GOTO 3005
  745. ON ERROR GOTO 0
  746. FIELD 1,satzl AS d$
  747. umlaut q$
  748. FOR i=an TO 1 STEP -1
  749.   q2$=t$(in(i)):umlaut q2$
  750.   IF q2$>q$ THEN in(i+1)=in(i) :ELSE IF q$>q2$ THEN in(i+1)=an+1:GOTO 3105
  751.   IF q$=q2$ THEN
  752.     IF t$(in(i))> tt$ THEN in(i+1)=in(i) :ELSE in(i+1)=an+1:GOTO 3105
  753.   END IF
  754. NEXT i
  755. in(1)=an+1
  756. 3105 
  757. t$(an+1)=tt$
  758. l=0:jj$=""
  759. WHILE VAL(jj$)<0 OR (VAL(jj$)=0 AND INSTR("00",jj$)=0 AND jj$<>".")OR jj$="" 
  760.   LOCATE 9,17:PRINT "Anfangsjahr (.=Nummern)";:lies jj$,2
  761. WEND
  762. IF jj$="." THEN
  763.   j(an+1)=-1:maxnr(an+1)=0
  764. ELSE  
  765.   j(an+1)=VAL(jj$)
  766.   ej$=""
  767.   WHILE VAL(ej$) < 0 OR (VAL(ej$)=0 AND INSTR("00",ej$)=0)OR ej$="" OR LEN(ej$)>2
  768.     LOCATE 11,17:PRINT "Endjahr ";:ej$=jj$:lies ej$,4
  769.   WEND
  770.   l=VAL(ej$)-VAL(jj$):IF l<0 THEN l=l+100
  771.   LOCATE 13,17:PRINT "Höchste Heftnummer im Jahr : ";:maxnum$="53"
  772.   maxnum=0
  773.   WHILE maxnum<1 OR maxnum>366
  774.     LOCATE 13,45:lies maxnum$,5
  775.     long&=VAL(maxnum$)
  776.     IF long&<=maxint THEN maxnum=long&
  777.   WEND
  778.   maxnr(an+1)=maxnum
  779.   l=maxnr(an+1)*l
  780. END IF
  781. q$=""
  782. WHILE VAL(q$)<1 OR VAL(q$)<>INT(VAL(q$)) OR (j(an+1)>-1 AND VAL(q$)>maxnr(an+1)) OR VAL(q$)>maxint
  783.   LOCATE 15,17:PRINT "Endnummer  ";:lies q$,5
  784. WEND
  785. q=l+VAL(q$):z(zmax,an+1)=q
  786. FOR j=0 TO zmax-1
  787.   z(j,an+1)=0
  788. NEXT j
  789. z(zmax+1,an+1)=0:dr(0)=dr(0)OR 4:dr(an+1)=4
  790. LOCATE 17,17:PRINT "Voreinstellung Ausdruck (j/n): "
  791. rq$=""
  792. WHILE rq$<>"J" AND rq$<>"N"
  793.   rq$=UCASE$(INKEY$)
  794. WEND
  795. IF rq$="J" THEN dr(an+1)=dr(an+1)OR 1
  796. fehler=0
  797. ON ERROR GOTO fehlerausw
  798. LSET d$=STRING$(satzl,0)
  799. FOR x=1 TO q:LOCATE 19,29:PRINT x
  800. PUT 1,x
  801. IF fehler=61 THEN
  802.   z(zmax,an+1)=x-1
  803.   LOCATE 22,9:PRINT "Die Diskette ist voll."
  804.   taste q
  805.   fehler=0
  806.   GOTO 3210
  807. END IF
  808. NEXT x
  809. 3210 
  810. CLOSE 1
  811. IF an=0 THEN 
  812.   MENU 1,1,1:MENU 1,3,1:MENU 1,4,1:MENU 1,5,1
  813.   MENU 2,0,1
  814.   MENU 3,1,1
  815.   MENU 3,3,1
  816. END IF   
  817. an=an+1
  818. ON ERROR GOTO 0
  819. IF LEN(tt$)<30 THEN KILL weg$+tt$+".info"
  820. LOCATE 22,14:PRINT "Weiter (Cr) oder Ende (F10)"
  821. q=0
  822. WHILE q<>13 AND q<>138 AND q<>129
  823.   taste q
  824. WEND
  825. IF q=13 THEN neuetitel :ELSE i=i+1:GOTO haupt
  826. bereichesperren:
  827. GOSUB 4650
  828. o=0
  829. IF j(index)=-1 THEN
  830.   o=1
  831. ELSE  
  832.   q$=""
  833.   WHILE (jj=0 AND INSTR("00",q$)=0)OR jj<0 OR jj>99 OR q$=""
  834.     LOCATE 4,14:PRINT "Jahrgang ";:lies q$,2
  835.     IF ASC(q$+" ")=129 THEN haupt
  836.     jj=VAL(q$)
  837.   WEND
  838.   IF jj<j(index) THEN jj=jj+100
  839. END IF
  840. q$="":nn=0
  841. WHILE nn<1
  842.   LOCATE 6,14:PRINT "Anfangsnummer ";:lies q$,5
  843.   IF ASC(q$+" ")=129 THEN haupt
  844.   long&=VAL(q$)
  845.   IF long&<=maxint THEN nn=long&
  846. WEND
  847. IF o=0 AND nn > maxnr(index) THEN LOCATE 20,12:PRINT "nicht vorhanden":taste q:GOTO haupt
  848. en=0
  849. WHILE en<1 OR (o=0 AND en>maxnr(index))
  850.   LOCATE 8,14:PRINT "Endnummer ";:lies q$,5
  851.   IF ASC(q$+" ")=129 THEN haupt
  852.   long&=VAL(q$)
  853.   IF long&<=maxint THEN en=long&
  854. WEND
  855. LOCATE 22,14:PRINT "weiter (Cr) oder Ende (F10)"
  856. q=0
  857. WHILE q<>13 AND q<>138 AND q<>129
  858.   taste q
  859. WEND  
  860. IF q=138 OR q=129 THEN haupt
  861. IF o=0 THEN
  862.   ll=maxnr(index)*(jj-j(index))+nn:le=ll-nn+en
  863. ELSE  
  864.   ll=nn:le=en
  865. END IF
  866. oeffne (weg$+t$(index)),1,satzl,0:io=-1:REM abzuziehen
  867. FIELD 1,satzl AS d$
  868. laenge=LOF(1)/satzl
  869. IF ll>laenge THEN CLOSE 1:LOCATE 20,14:PRINT "Nicht vorhanden!":taste q:GOTO haupt
  870. IF le>laenge THEN le=laenge
  871. FOR l=ll TO le 
  872.   GET 1,l:decodiere d$
  873.   IF dat(0)>0 OR geszahl>0 THEN
  874.     io=io+1
  875.   ELSE  
  876.     LSET d$=CHR$(240)+STRING$(satzl-1,0):PUT 1,l
  877.   END IF
  878. NEXT l
  879.  CLOSE 1
  880. z(zmax,index)=z(zmax,index)-le+ll+io:dr(index)=dr(index)OR 4:dr(0)=dr(0)OR 4
  881. CLS
  882. LOCATE 22,14:PRINT "weiter (Cr) oder Ende (F10)"
  883. WHILE true
  884.   taste q
  885.   IF q=13 THEN bereichesperren
  886.   IF q=138 OR q=129 THEN haupt
  887. WEND
  888. dateierweitern:
  889. CLS
  890. LOCATE 6,28:PRINT "Dateien erweitern"
  891. LOCATE 8,28:PRINT "1.Dateien erweitern"
  892. LINE (210,52)-(374,68),1,b
  893. LOCATE 11,28:PRINT "2.Dateiende suchen"
  894. LINE (210,76)-(366,92),1,b
  895. q=0
  896. WHILE q<1 OR q>2
  897.   taste q
  898.   IF q=129 THEN haupt
  899.   q=q-ASC("0")
  900.   IF mausx>209 THEN
  901.     IF mausx<375 AND mausy>51 AND mausy<69 THEN
  902.       q=1
  903.     ELSEIF mausx<367 AND mausy>75 AND mausy<93 THEN
  904.       q=2
  905.     END IF
  906.   END IF
  907. WEND        
  908. IF q=2 THEN 4310
  909. GOSUB 4650
  910. GOSUB 4320
  911. LOCATE 8,12:PRINT "von "
  912. l=laenge+1:sn=l:jahreszahl l,aj,sn
  913. IF j(index)>-1 THEN LOCATE 8,18:PRINT "Jahrgang "aj
  914. LOCATE 10,18:PRINT "Nummer "sn
  915. LOCATE 12,12:PRINT "bis"
  916. IF j(index)>-1 THEN
  917.   LOCATE 12,18:PRINT "Jahrgang":q$=RIGHT$(STR$(aj),LEN(STR$(aj))-1)
  918.   ej=-1
  919.   WHILE ej>99 OR ej<0 OR q$="" OR (ej=0 AND INSTR("00",q$)=0)
  920.     LOCATE 12,27:lies q$,4:ej=VAL(q$)
  921.     IF ASC(q$+" ")=129 THEN haupt
  922.   WEND
  923.   IF ej<aj THEN ej=ej+100
  924. END IF
  925. LOCATE 14,18:PRINT "Nummer":q$=""
  926. en=0
  927. WHILE en<1 OR (j(index)>-1 AND en>maxnr(index)) OR ((j(index)=-1 OR aj=ej)AND en<sn)
  928.   LOCATE 14,25:lies q$,5
  929.   IF ASC(q$+" ")=129 THEN haupt
  930.   long&=VAL(q$)
  931.   IF long&<=maxint THEN en=long&
  932. WEND
  933. IF j(index)=-1 THEN
  934.   al=sn:sl=en
  935. ELSE  
  936.   al=maxnr(index)*(aj-j(index))+sn
  937.   sl=maxnr(index)*(ej-j(index))+en
  938. END IF
  939. oeffne (weg$+t$(index)),1,satzl,0
  940. FIELD 1,satzl AS d$
  941. fehler=0
  942. ON ERROR GOTO fehlerausw
  943. LSET d$=STRING$(satzl,0)
  944. FOR j=al TO sl:LOCATE 20,30:PRINT j
  945.   PUT 1,j
  946. IF fehler=61 THEN
  947.   sl=j-1
  948.   LOCATE 22,9:PRINT "Die Diskette ist voll."
  949.   taste q
  950.   fehler=0
  951.   GOTO 4010
  952. END IF
  953. NEXT j
  954. 4010 
  955. ON ERROR GOTO 0
  956. CLOSE 1
  957. z(zmax,index)=z(zmax,index)+sl-al+1:dr(index)=dr(index) OR 4:dr(0)=dr(0)OR 4
  958. GOTO haupt
  959. 4320 
  960.  oeffne (weg$+t$(index)),1,satzl,0
  961.  laenge=LOF(1)/satzl
  962.  CLOSE 1
  963. RETURN
  964. REM ------ ende suchen ------
  965. 4310 
  966. GOSUB 4650:GOSUB 4320
  967. CLS
  968. jahreszahl laenge,jj,l
  969. IF j(index)>-1 THEN LOCATE 8,18:PRINT "Ende: Jahr "jj
  970. LOCATE 10,18:PRINT "Endnummer "l
  971. LOCATE 22,15:PRINT "(Taste)"
  972. taste q
  973. GOTO haupt
  974. REM --------- eingabe zu gross
  975. 4570 
  976. CLOSE 1
  977. CLS
  978. LOCATE 5,15:PRINT "Für diese Nummer ist noch kein"
  979. LOCATE 7,15:PRINT "Platz vorbereitet"
  980. LOCATE 10,15:PRINT "(1 - 4 wählen)"
  981. LOCATE 19,15:PRINT "(Taste)"
  982. taste q
  983. GOTO haupt
  984. REM ---titel auflisten -------
  985. 4650 
  986. CLS
  987. LOCATE 21,5:PRINT "Suche mit Cursortaste, mit Cr ":LOCATE 21,35
  988. IF au=0 THEN PRINT "Übernehmen." :ELSE PRINT "wechseln. Ende mit F10, alle mit F6"
  989. LOCATE 22,13:PRINT "Runter/hoch: +/- 1, rechts/links +/- 10"
  990. LINE (224,100)-(264,116),2,bf
  991. LINE (265,100)-(304,116),3,bf
  992. LINE (305,100)-(352,116),2,bf
  993. LINE (353,100)-(392,116),3,bf
  994. LINE (544,140)-(576,156),2,bf
  995. LINE (543,139)-(577,157),3,b
  996. COLOR 3,2:LOCATE 19,70:PRINT "OK":COLOR 1,0
  997. IF au<>0 THEN
  998.   LINE (392,28)-(440,44),2,bf
  999.   LINE (496,28)-(542,44),2,bf
  1000.   LOCATE 5,64:COLOR ,2:PRINT "Alle"
  1001. END IF
  1002. COLOR ,2
  1003. LOCATE 14,30:PRINT "+10"
  1004. LOCATE 14,41:PRINT "+1"
  1005. COLOR ,3
  1006. LOCATE 14,35:PRINT "-10"
  1007. LOCATE 14,47:PRINT "-1"
  1008. COLOR ,0
  1009. IF i<1 OR i> an THEN i=INT(an/2)
  1010. IF au>0 THEN LOCATE 3,49:PRINT "Ausdruck"
  1011. REM schleife
  1012. 4740 
  1013. IF i<1 THEN i=i+an :ELSE IF i>an THEN i=i-an
  1014. index=in(i):LOCATE 5,5:PRINT  USING"#####";i:LOCATE 5,11:PRINT USING "\                            \";t$(index)
  1015. 4755 
  1016. IF au>0 THEN
  1017.   COLOR ,2
  1018.   LOCATE 5,51:IF (dr(index)AND 1)=1 THEN PRINT " ja " :ELSE PRINT "nein"
  1019.   COLOR ,0
  1020. END IF  
  1021. 4760 
  1022. taste q
  1023. IF q=129 THEN RETURN haupt
  1024. IF mausy>-1 THEN 4900
  1025. IF q=28 THEN i=i-1:GOTO 4740
  1026. IF q=29 THEN i=i+1:GOTO 4740
  1027. IF an>=11 THEN
  1028.   IF q=30 THEN i=i+10:GOTO 4740
  1029.   IF q=31 THEN i=i-10:GOTO 4740
  1030. END IF
  1031. IF (q=13 AND au=0) OR (q=138) GOTO 4830
  1032. 4815 
  1033. IF q=13 AND au=2 THEN
  1034.   dr(index)=(dr(index)XOR 1)OR 8
  1035.   dr(0)=dr(0)OR 4
  1036.   GOTO 4755
  1037. END IF
  1038. 4820 
  1039. IF au=2 AND q=134 THEN
  1040.   x=(dr(index)AND 1)OR 8
  1041.   FOR j=1 TO an
  1042.     dr(j)=(dr(j)AND 254)OR x
  1043.   NEXT j
  1044.   dr(0)=dr(0)OR 4
  1045. END IF
  1046. GOTO 4760
  1047. 4830 
  1048. CLS:o=1:RETURN
  1049. 4900 
  1050. IF ABS(mausx-308)<85 AND ABS(mausy-108)<9 THEN
  1051.   IF mausx>352 THEN
  1052.     i=i-1
  1053.   ELSEIF mausx>304 THEN
  1054.     i=i+1
  1055.   ELSEIF an>10 THEN
  1056.     IF mausx>264 THEN
  1057.       i=i-10
  1058.     ELSE  
  1059.       i=i+10
  1060.     END IF
  1061.   END IF
  1062. GOTO 4740
  1063. END IF
  1064. IF (mausx>391) AND (mausx<441) AND (mausy>27)AND (mausy<45) THEN q=13:GOTO 4815
  1065. IF (mausx>542) AND (mausx<578) AND (mausy>138)AND (mausy<158) THEN 4830
  1066. IF mausx>495 AND mausx<543 AND mausy>27 AND mausy<45 THEN q=134:GOTO 4820
  1067. GOTO 4760
  1068. REM --grosse auswertung ---
  1069. neueausw:
  1070. CLS:bs=-1
  1071. LOCATE 5,33:PRINT "Neue Auswertung"
  1072. LOCATE 8,33:PRINT "1. eine Sorte"
  1073. LINE (250,52)-(366,68),1,b
  1074. LOCATE 11,33:PRINT "2. Gesamtauswertung"
  1075. LINE (250,76)-(414,92),1,b
  1076. o=0
  1077. WHILE o<1 OR o>2
  1078.   taste o
  1079.   IF o=129 THEN haupt
  1080.   o=o-ASC("0")
  1081.   IF mausx>249 THEN
  1082.     IF mausx<367 AND ABS(mausy-60)<9 THEN
  1083.       o=1
  1084.     ELSEIF mausx<415 AND ABS(mausy-84)<9 THEN
  1085.       o=2
  1086.     END IF
  1087.   END IF
  1088. WEND
  1089. CLS        
  1090. FOR j=0 TO zmax-1:a(j)=0:NEXT j
  1091. fehlend=0:gesamt=0:doppelt=0:anzahl=0
  1092. IF o=2 THEN FOR i=1 TO an:index=in(i) :ELSE GOSUB 4650:CLS:GOSUB 6010
  1093.  LOCATE 1,4:PRINT USING "\                            \";t$(index)
  1094.  LOCATE 1,45:PRINT "Space : Bildschirmanzeige an/aus"
  1095.  oeffne (weg$+t$(index)),1,satzl,0
  1096.  FIELD 1,satzl AS d$
  1097.  laenge=LOF(1)/satzl
  1098.  FOR l=1 TO laenge
  1099.    GET 1,l
  1100.    decodiere d$
  1101.    IF dat(0)=0 THEN
  1102.      FOR j=bestZust TO zmax-1:a(j)=a(j)+dat(j+1):NEXT j
  1103.      gesamt=gesamt+1
  1104.      IF geszahl=0 THEN
  1105.        fehlend=fehlend+1
  1106.      ELSE  
  1107.        doppelt=doppelt+geszahl-1
  1108.        anzahl=anzahl+geszahl
  1109.      END IF
  1110.      bs$=INKEY$
  1111.      IF bs$<>"" THEN
  1112.        IF bs$=" " THEN bs=NOT(bs) :ELSE IF ASC(bs$)=129 THEN CLOSE 1:GOTO haupt
  1113.      END IF
  1114.      IF bs THEN GOSUB 6095
  1115.    END IF
  1116.  NEXT l
  1117.  CLOSE 1
  1118.  ok=(z(zmax,index)=gesamt AND z(zmax+1,index)=doppelt)
  1119.  FOR j=0 TO zmax-1:ok=ok AND (z(j,index)=a(j)):NEXT j
  1120.  IF NOT ok THEN
  1121.    FOR j=0 TO zmax-1
  1122.      z(j,index)=a(j)
  1123.    NEXT j
  1124.    z(zmax,index)=gesamt
  1125.    z(zmax+1,index)=doppelt
  1126.    dr(index)=dr(index) OR 4:dr(0)=dr(0)OR 4
  1127.  END IF
  1128.  GOSUB 6095
  1129.  FOR j=0 TO zmax-1:a(j)=0:NEXT j
  1130.  fehlend=0:gesamt=0:doppelt=0:anzahl=0
  1131. IF o=2 THEN NEXT i
  1132. GOTO haupt
  1133.  
  1134. 6000 
  1135. LOCATE 1,19:PRINT q$
  1136. 6010 
  1137. LOCATE 3,2:PRINT "Anzahl "
  1138. FOR j=0 TO zmax-1:LOCATE 3+j,10:PRINT j;":":NEXT j
  1139. LOCATE zmax+4,2:PRINT "Gesamt"
  1140. LOCATE zmax+5,2:PRINT "fehlend"
  1141. LOCATE zmax+6,2:PRINT "doppelt"
  1142. REM werte schreiben
  1143. 6095 
  1144. FOR j=0 TO zmax-1
  1145.   LOCATE 3+j,14:PRINT  USING"######";a(j)
  1146.   IF anzahl>0 THEN LOCATE 3+j,23:PRINT  USING"####.## %";100*a(j)/anzahl;
  1147. NEXT j
  1148. LOCATE zmax+4,14:PRINT  USING"######";anzahl
  1149. IF gesamt>0 THEN LOCATE zmax+4,23:PRINT USING"####.## %";100*(gesamt-fehlend)/gesamt;
  1150. LOCATE zmax+5,14:PRINT  USING"######";fehlend
  1151. IF gesamt>0 THEN LOCATE zmax+5,23:PRINT  USING"####.## %";100*fehlend/gesamt;
  1152. LOCATE zmax+6,14:PRINT  USING"######";doppelt
  1153. IF anzahl>0 THEN LOCATE zmax+6,23:PRINT  USING"####.## %";100*doppelt/anzahl;
  1154. RETURN
  1155.  
  1156. abmelden:
  1157. CLS
  1158. IF an>0 THEN
  1159.   GOSUB 8010
  1160.   IF (dr(0)AND 4)>0 THEN GOSUB 8250
  1161. END IF
  1162. CLS
  1163. LOCATE 4,31:PRINT "A b m e l d e n"
  1164. LINE (274,53)-(400,67),1,b
  1165. LOCATE 8,36:PRINT "1. Amiga Basic"
  1166. LINE (274,77)-(432,91),1,b
  1167. LOCATE 11,36:PRINT "2. Workbench / CLI"
  1168. LINE (274,101)-(384,115),1,b
  1169. LOCATE 14,36:PRINT "3. Hauptmenü"
  1170. q=0
  1171. WHILE q<1 OR q>3
  1172.   taste q
  1173.   IF q=129 THEN haupt
  1174.   IF mausx>273 THEN
  1175.     IF mausx<401 AND mausy<68 AND mausy>52 THEN
  1176.       q=1
  1177.     ELSEIF mausx<433 AND mausy<92 AND mausy>76 THEN
  1178.       q=2
  1179.     ELSEIF mausx<385 AND mausy<116 AND mausy>100 THEN
  1180.       q=3
  1181.     END IF
  1182.   ELSE
  1183.     q=q-ASC("0")
  1184.   END IF
  1185. WEND
  1186. IF q=1 THEN
  1187.   END
  1188. ELSEIF q=2 THEN
  1189.   SYSTEM
  1190. ELSE
  1191.   GOTO haupt
  1192. END IF
  1193.  
  1194. 8010 
  1195. IF (dr(0)AND 4)>0 OR aa<>an OR va<>0 THEN
  1196.   oeffne Pfad$+"Zahlen",1,2,0
  1197.   PRINT "Zahlen"
  1198.   FIELD 1,2 AS d$
  1199. 8015 
  1200.   LSET d$=MKI$(an)
  1201.   PUT 1,1
  1202.   LSET d$=MKI$(zmax)
  1203.   PUT 1
  1204.   fehler=0
  1205.   ON ERROR GOTO fehlerausw
  1206.   FOR i=1 TO an
  1207.     IF (dr(i) AND 4)>0 THEN
  1208. 8020 
  1209.       LSET d$=MKI$(z(0,i)):PUT 1,3+(i-1)*(zmax+2)
  1210.       IF fehler=61 THEN
  1211.         GOSUB diskvoll
  1212.         GOTO 8020
  1213.       END IF
  1214.       FOR j=1 TO zmax+1
  1215.         LSET d$=MKI$(z(j,i)):PUT 1
  1216.         IF fehler=61 THEN
  1217.           GOSUB diskvoll
  1218.           GOTO 8015
  1219.         END IF
  1220.       NEXT j
  1221.     END IF
  1222.   NEXT i
  1223.   ON ERROR GOTO 0
  1224.   CLOSE 1
  1225.   dr(0)=dr(0)OR 8 
  1226. END IF
  1227. IF voraend>0 THEN
  1228.   oeffne Pfad$+"Druckart",1,107,0
  1229.   FIELD 1,30 AS d$,1 AS bed$,1 AS lg$,5 AS t1$,5 AS t2$,1 AS lg2$,5 AS t3$,5 AS t4$,4 AS lg3$,50 AS t5$
  1230.   i=0
  1231.   WHILE (druckbits(i)<255) AND (i<10)  
  1232.     LSET d$=druck$(i)
  1233.     LSET bed$=CHR$(druckbits(i))
  1234.     LSET lg$=CHR$(16*LEN(trenn$(i,10))+LEN(trenn$(i,11)))
  1235.     LSET t1$=trenn$(i,10)
  1236.     LSET t2$=trenn$(i,11)
  1237.     LSET lg2$=CHR$(16*LEN(trenn$(i,12))+LEN(trenn$(i,13)))
  1238.     LSET t3$=trenn$(i,12)
  1239.     LSET t4$=trenn$(i,13)
  1240.     IF (druckbits(i)AND 32)>0 THEN
  1241.       q$="":lg&=0
  1242.       FOR j=0 TO zmax-1
  1243.         lg&=lg&*8+LEN(trenn$(i,zmax-1-j))
  1244.         q$=q$+trenn$(i,j)+SPACE$(5-LEN(trenn$(i,j)))
  1245.       NEXT j
  1246.       LSET lg3$=MKL$(lg&)
  1247.       LSET t5$=q$
  1248.     END IF
  1249.     i=i+1
  1250.     PUT 1,i
  1251.   WEND
  1252.   WHILE i<10
  1253.     LSET d$=""
  1254.     LSET bed$=CHR$(255)
  1255.     i=i+1
  1256.     PUT 1,i
  1257.   WEND        
  1258.   CLOSE 1
  1259.   dr(0)=dr(0)OR 64
  1260.   voraend=0
  1261. END IF
  1262. IF aa<>an OR va<>0 THEN
  1263.   oeffne Pfad$+"Titel",1,34,0:PRINT "Titel"
  1264.   FIELD 1,1 AS laenge$,30 AS d$,1 AS jahr$,2 AS mnr$
  1265.   ON ERROR GOTO fehlerausw
  1266.   fehler=0
  1267.   FOR i=aa+1 TO an
  1268. 8030 
  1269.     IF j(i)>-1 THEN q$=CHR$(j(i)) :ELSE q$=CHR$(100)
  1270.     LSET laenge$=CHR$(LEN(t$(i)))
  1271.     LSET d$=t$(i)
  1272.     LSET jahr$=q$
  1273.     LSET mnr$=MKI$(maxnr(i))
  1274.     PUT 1,i
  1275.     IF fehler=61 THEN
  1276.       GOSUB diskvoll
  1277.       GOTO 8030
  1278.     END IF
  1279.   NEXT i
  1280.   CLOSE 1
  1281.   dr(0)=dr(0)OR 16
  1282.   oeffne Pfad$+"Index",1,2,0:PRINT "Index"
  1283.   FIELD 1,2 AS d$
  1284.   FOR i=1 TO an
  1285. 8040 
  1286.     LSET d$=MKI$(in(i)):PUT 1,i
  1287.     IF fehler=61 THEN
  1288.       GOSUB diskvoll
  1289.       GOTO 8040
  1290.     END IF
  1291.   NEXT i
  1292.   ON ERROR GOTO 0
  1293.   CLOSE 1
  1294.   dr(0)=dr(0)OR 2
  1295. aa=an:va=0
  1296. END IF
  1297. CLS:RETURN
  1298. 8250 
  1299. oeffne Pfad$+"Voreinstellung",1,1,0:PRINT "Voreinstellung"
  1300. FIELD 1,1 AS d$
  1301. dr(0)=dr(0)OR 32
  1302. ON ERROR GOTO fehlerausw
  1303. fehler=0
  1304. FOR i=0 TO an
  1305. 8260 
  1306.   IF (dr(i)AND 4)>0 THEN
  1307.     LSET d$=CHR$((dr(i)AND 1)OR 2):PUT 1,i+1:dr(i)=dr(i)AND 243
  1308.   ELSEIF (dr(i)AND 8)>0 THEN
  1309.     LSET d$=CHR$(dr(i)AND 3):PUT 1,i+1:dr(i)=dr(i)AND 243
  1310.   END IF
  1311.   IF fehler=61 THEN
  1312.     GOSUB diskvoll
  1313.     GOTO 8260
  1314.   END IF
  1315. NEXT i:CLOSE 1
  1316. RETURN
  1317. diskvoll:
  1318.  CLS
  1319.  LOCATE 5,5:PRINT "Die Diskette ist voll. Bitte schaffen Sie Platz"
  1320.  LOCATE 6,5:PRINT "für die Dateien, indem Sie (mit dem CLI) einige Dateien"
  1321.  LOCATE 7,5:PRINT "aus dem Verzeichnis 'comdat' auf eine andere Diskette kopieren,"
  1322.  LOCATE 8,5:PRINT "und hier löschen. Dann geht's mit einem Tastendruck weiter."
  1323.  taste q
  1324.  fehler=0
  1325. RETURN
  1326. werteladen:
  1327. q=1
  1328. oeffne (Pfad$+"Zahlen"),1,2,q
  1329. IF q=1 THEN GOSUB 16000:GOTO werteladen
  1330. FIELD 1,2 AS d$
  1331. GET 1,1:an=CVI(d$):GET 1:zmax=CVI(d$):zmax$=RIGHT$(STR$(zmax-1),LEN(STR$(zmax-1))-1):satzl=(zmax+2)\2
  1332. IF (FRE(0)-1000)\70 <= an THEN CLOSE 1:CLEAR ,(an+200)*70+70000:GOTO anfang
  1333. mq=an+50:IF mq<200 THEN mq=200
  1334. DIM t$(mq),j(mq),z(2+zmax,mq),dr(mq),in(mq),maxnr(mq),de(3),de$(4),dat(2*satzl),a(zmax-1),druck$(9),druckbits(10),trenn$(9,13)
  1335. FOR i=0 TO zmax-1:a(i)=0:NEXT i
  1336. IF an>0 THEN
  1337.   FOR i=1 TO an
  1338.     FOR j=0 TO zmax+1
  1339.       GET 1
  1340.       z(j,i)=CVI(d$)
  1341.     NEXT j
  1342.   NEXT i
  1343.   CLOSE 1
  1344.   oeffne Pfad$+"Titel",1,34,0
  1345.   FIELD 1,1 AS laenge$,30 AS d$,1 AS jahr$,2 AS mnr$
  1346.   FOR i=1 TO an
  1347.     GET 1,i:t$(i)=LEFT$(d$,ASC(laenge$)):j(i)=ASC(jahr$):maxnr(i)=CVI(mnr$)
  1348.     IF j(i)>=100 THEN j(i)=-1 
  1349.   NEXT i
  1350.   CLOSE 1
  1351.   oeffne Pfad$+"Index",1,2,0
  1352.   FIELD 1,2 AS d$
  1353.   FOR i=1 TO an
  1354.     GET 1,i:in(i)=CVI(d$)
  1355.   NEXT i:CLOSE 1
  1356.   oeffne Pfad$+"Voreinstellung",1,1,0
  1357.   FIELD 1,1 AS d$
  1358.   FOR i=0 TO an
  1359.     GET 1,i+1:dr(i)=ASC(d$)
  1360.   NEXT i:
  1361. END IF
  1362. CLOSE 1
  1363. oeffne Pfad$+"Drucker",1,1,0
  1364. CLOSE 1
  1365. OPEN Pfad$+"Drucker" FOR INPUT AS 1
  1366.  INPUT#1,komplpfad$
  1367.  INPUT#1,lib$
  1368.  INPUT#1,zwsp$
  1369.  FOR i=0 TO 3
  1370.    INPUT#1,de$(i)
  1371.  NEXT i  
  1372.  FOR i=0 TO 2
  1373.    de(i)=CVI(INPUT$(2,1))
  1374.  NEXT i     
  1375.  CLOSE 1:de(3)=(de(2)\2)-2
  1376.  de$(4)=SPACE$(4+de(2) MOD 2)
  1377.  oeffne Pfad$+"Druckart",1,107,0
  1378.  FIELD 1,30 AS d$,1 AS bed$,1 AS lg$,5 AS t1$,5 AS t2$,1 AS lg2$,5 AS t3$,5 AS t4$,4 AS lg3$,50 AS t5$
  1379.  i=0
  1380.  GET 1,1
  1381.  druckbits(i)=ASC(bed$)
  1382.  WHILE (druckbits(i)<255)AND (i<10) 
  1383.    GET 1,i+1
  1384.    druckbits(i)=ASC(bed$)
  1385.    druck$(i)=d$
  1386.    trenn$(i,10)=LEFT$(t1$,ASC(lg$)\16)
  1387.    trenn$(i,11)=LEFT$(t2$,ASC(lg$)AND 15)
  1388.    trenn$(i,12)=LEFT$(t3$,ASC(lg2$)\16)
  1389.    trenn$(i,13)=LEFT$(t4$,ASC(lg2$)AND 15)
  1390.    lg&=CVL(lg3$)
  1391.    IF (druckbits(i)AND 32)>0 THEN
  1392.      FOR j=0 TO zmax-1
  1393.        trenn$(i,j)=MID$(t5$,1+5*j,lg& AND 7)
  1394.        lg&=lg&\8
  1395.      NEXT j
  1396.    END IF  
  1397.    i=i+1
  1398.  WEND      
  1399. CLOSE 1
  1400. RETURN
  1401. ausdruck:
  1402. CLS
  1403. LOCATE 6,8:PRINT "       A U S D R U C K     "
  1404. LINE (50,53)-(276,67),1,b
  1405. LOCATE 8,8:PRINT "1. Auswahl bestimmter Hefte"
  1406. LINE (50,77)-(246,91),1,b
  1407. LOCATE 11,8:PRINT "2. Ausdruck einer Sorte"
  1408. LINE (50,101)-(340,115),1,b
  1409. LOCATE 14,8:PRINT "3. Ausdruck in Heftformat : Auswahl"
  1410. LINE (50,125)-(366,139),1,b
  1411. LOCATE 17,8:PRINT "4. Ausdruck in Heftformat : eine Sorte"
  1412. da=0
  1413. WHILE da<1 OR da>4
  1414.   taste da
  1415.   IF da=129 THEN haupt
  1416.   IF mausx>49 THEN
  1417.     IF mausx<277 AND mausy<68 AND mausy>52 THEN
  1418.       da=1
  1419.     ELSEIF mausx<247 AND mausy<92 AND mausy>76 THEN
  1420.       da=2
  1421.     ELSEIF mausx<341 AND mausy<116 AND mausy>100 THEN
  1422.       da=3
  1423.     ELSEIF mausx<367 AND mausy<140 AND mausy>124 THEN
  1424.       da=4
  1425.     ELSE
  1426.       da=0
  1427.     END IF
  1428.   ELSE
  1429.     da=da-ASC("0")
  1430.   END IF
  1431. WEND
  1432. ON da GOTO 8680,9200,9250,9260
  1433. REM -----Auswahl der zu druckenden Hefte-----
  1434. 8580 
  1435. CLS
  1436. LINE (26,29)-(228,43),1,b
  1437. LOCATE 5,5:PRINT "1. Vorauswahl übernehmen"
  1438. LINE (26,53)-(213,67),1,b
  1439. LOCATE 8,5:PRINT "2. Vorauswahl abändern"
  1440. LOCATE 15,5:au=0 
  1441. WHILE au<1 OR au>2
  1442.   taste au
  1443.   IF au=129 THEN RETURN haupt
  1444.   IF mausx>25 THEN
  1445.     IF mausx<229 AND mausy>26 AND mausy<46 THEN
  1446.       au=1
  1447.     ELSEIF mausx<214 AND mausy>52 AND mausy<68 THEN
  1448.       au=2
  1449.     END IF
  1450.   ELSE
  1451.     au=au-ASC("0")
  1452.   END IF
  1453. WEND
  1454. o=0
  1455. RETURN
  1456. 8680 
  1457. GOSUB 8580
  1458. IF au=2 THEN GOSUB 4650:o=0
  1459. GOSUB 9300
  1460. 8690 
  1461. CLS  
  1462. LOCATE 1,36:PRINT "Ausdruck"
  1463. LOCATE 8,3:PRINT "Bitte den Drucker so einstellen, daß der Druckkopf am Blattanfang steht."
  1464. LOCATE 9,3:PRINT "Dann Taste drücken!"
  1465.  taste q
  1466.  IF q=129 THEN haupt
  1467. OPEN de$(3) FOR OUTPUT AS 4
  1468. PRINT #4,de$(0);
  1469. CLOSE 4
  1470. OPEN "prt:" FOR OUTPUT AS 4
  1471. zz=1
  1472. IF o=0 THEN FOR i=1 TO an
  1473.  index=in(i)
  1474.  IF o=0 AND (dr(index)AND 1)=0 THEN 9170 
  1475.  IF jx=3 AND z(zmax+1,index)=0 THEN 9170
  1476.  IF jx=2 THEN
  1477.    q=0:FOR j=0 TO zmax-1:q=q+z(j,index):NEXT j
  1478.    IF q-z(zmax,index)-z(zmax+1,index)>=0 THEN 9170
  1479.  END IF  
  1480.  LOCATE 10,10:PRINT USING "\                            \";t$(index)
  1481.  oeffne weg$+t$(index),1,satzl,0
  1482.  FIELD 1,satzl AS d$
  1483.  laenge=LOF(1)/satzl
  1484.  FOR l=1 TO laenge
  1485.    IF zz=1 THEN
  1486.      IF jx=2 THEN CALL titelleiste(4) :ELSE CALL titelleiste (3)
  1487.      zz=2
  1488.    END IF  
  1489.    IF ASC(INKEY$+" ")=129 THEN
  1490.      LOCATE 12,10:PRINT "Ende = Cr, weiter = f10"
  1491.      q=0
  1492.      WHILE q<>13 AND q<>138 AND q<>129
  1493.        taste q
  1494.      WEND
  1495.      IF q=13 OR q=129 THEN CLOSE 1:CLOSE 4:GOTO haupt
  1496.      LOCATE 12,10:PRINT SPACE$(24)
  1497.    END IF
  1498.    GET 1,l:decodiere d$
  1499.    IF dat(0)=0 THEN
  1500.      jahreszahl l,j,nr
  1501.      IF (jx=1 AND geszahl>0) OR (jx=3 AND geszahl>1) THEN
  1502.        PRINT #4,USING"\                            \";t$(index);
  1503.        IF j(index)>-1 THEN PRINT #4,USING"####";j; :ELSE PRINT #4,"    ";
  1504.        PRINT #4,USING "##### ";nr;
  1505.        PRINT #4,SPACE$(bestZust*3);
  1506.        FOR j=bestZust+1 TO zmax:
  1507.          IF dat(j)>0 THEN PRINT #4,USING "###";dat(j); :ELSE PRINT #4,"   ";
  1508.        NEXT:PRINT #4,USING "######";geszahl
  1509.        zz=zz+1
  1510.        IF zz>=de(0)-1 THEN
  1511.          zz=1
  1512.          CLOSE 4
  1513.          OPEN de$(3) FOR OUTPUT AS 4
  1514.          PRINT #4,de$(1);de$(1);
  1515.          CLOSE 4
  1516.          OPEN "prt:" FOR OUTPUT AS 4
  1517.        END IF
  1518.      ELSEIF jx=2 AND geszahl=0 THEN
  1519.        PRINT #4,USING"\                            \";t$(index);
  1520.        IF j(index)>-1 THEN PRINT #4,USING"####";j; :ELSE PRINT #4,"    ";
  1521.        PRINT #4,USING "#####";nr
  1522.        IF zz>=de(0)-1 THEN
  1523.          zz=1
  1524.          CLOSE 4
  1525.          OPEN de$(3) FOR OUTPUT AS 4
  1526.          PRINT #4,de$(1);de$(1);
  1527.          CLOSE 4
  1528.          OPEN "prt:" FOR OUTPUT AS 4
  1529.        END IF
  1530.      END IF
  1531.    END IF
  1532.  NEXT l
  1533.  CLOSE 1
  1534.  CLOSE 4
  1535.  OPEN de$(3) FOR OUTPUT AS 4
  1536.  PRINT #4,de$(1);
  1537.  zz=zz+1
  1538.  IF zz>=de(0)-1 THEN
  1539.    zz=1
  1540.    PRINT #4,de$(1);
  1541.    CLOSE 4
  1542.    OPEN "prt:" FOR OUTPUT AS 4
  1543.  END IF
  1544. 9170 
  1545. IF o=0 THEN NEXT i
  1546. CLOSE 4:au=0
  1547. GOTO haupt
  1548.  
  1549. REM ausdr nur eine sorte
  1550. 9200 
  1551. GOSUB 4650
  1552. GOSUB 9300
  1553. GOTO 8690
  1554. REM ausdruck in heftformat
  1555. 9250 
  1556. GOSUB 8580
  1557. IF au=2 THEN GOSUB 4650
  1558. GOSUB 9500:o=0:GOTO 9600
  1559. REM ausdruck in heftformat eine sorte
  1560. 9260 
  1561. GOSUB 4650:GOSUB 9500:GOTO 9600
  1562. 9300 
  1563. CLS:io=0
  1564. LINE (26,29)-(188,43),1,b
  1565. LOCATE 5,5:PRINT "1. Vorhandene Hefte"
  1566. LINE (26,53)-(172,67),1,b
  1567. LOCATE 8,5:PRINT "2. Fehlende Hefte"
  1568. LINE (26,77)-(132,91),1,b
  1569. LOCATE 11,5:PRINT "3. Mehrfache"
  1570. LOCATE 15,5:jx=0
  1571. WHILE jx<1 OR jx>3 
  1572.   taste jx
  1573.   IF jx=129 THEN au=0:RETURN haupt 
  1574.   IF mausx>25 THEN
  1575.     IF mausx<189 AND mausy>28 AND mausy<44 THEN
  1576.       jx=1
  1577.     ELSEIF mausx<173 AND mausy>52 AND mausy<68 THEN
  1578.       jx=2
  1579.     ELSEIF mausx<133 AND mausy>76 AND mausy<92 THEN
  1580.       jx=3
  1581.     END IF
  1582.   ELSE
  1583.     jx=jx-ASC("0")
  1584.   END IF
  1585. WEND
  1586. RETURN
  1587. 9500 
  1588. CLS
  1589. MENU 4,0,1,"Voreinstellung"
  1590. j=0
  1591. WHILE (druckbits(j)<255)AND(j<10)
  1592.   MENU 4,j+1,1,druck$(j)
  1593.   j=j+1
  1594. WEND   
  1595. MENU 4,j+1,1,"neu"
  1596. MENU 4,j+2,1,"löschen"
  1597. vanz=j
  1598. ja1$="<<":ja2$=">> ":nv1$="(":nv2$=")"
  1599. FOR j=0 TO zmax-1:zust$(j)=RIGHT$(STR$(j),LEN(STR$(j))-1):NEXT j  
  1600. 9510 
  1601.  REM 4
  1602. CLS:LOCATE 1,32:PRINT "A u s d r u c k"
  1603. MENU 1,0,0:MENU 2,0,0:MENU 3,0,0
  1604. IF vanz>0 THEN
  1605.   men1=1
  1606.   GOSUB 9560 
  1607. ELSE
  1608.   b2=true:b3=false:b4=false:b5=false:b6=false:b7=false 'Voreinst
  1609.   GOSUB 9550:GOSUB 9551:GOSUB 9552:GOSUB 9553:GOSUB 9554:GOSUB 9555
  1610. END IF
  1611. LINE (544,140)-(576,156),2,bf
  1612. COLOR 3,2:LOCATE 19,70:PRINT "OK"
  1613. LINE (543,139)-(577,157),3,b
  1614. COLOR 1,0:LOCATE 23,4:PRINT "Auswahl mit den Cursortasten, Ende mit F10, Trennzeichen ändern mit F6";
  1615. 9512 
  1616. COLOR 0,1:LOCATE 4,23:IF b2 THEN PRINT " ja " :ELSE PRINT "nein"
  1617. 9514 
  1618. taste q
  1619. IF q=129 THEN COLOR 1,0:RETURN haupt
  1620. IF q=134 THEN GOSUB 9565:GOTO 9514
  1621. IF men0>0 THEN GOSUB 9560  'evtl goto wg f1
  1622. IF mausx>-1 THEN 
  1623.   COLOR 1,0:LOCATE 4,23:IF b2 THEN PRINT " ja " :ELSE PRINT "nein"
  1624.   GOTO 9570
  1625. END IF  
  1626. IF q=138 GOTO 9580
  1627. IF q<29 OR q>31 THEN 9514
  1628. 9515 
  1629. IF q=30 OR q=31 THEN
  1630.   b2=NOT(b2)
  1631.   IF NOT(b2) THEN
  1632.     b3=false
  1633.     b6=false
  1634.     b7=false
  1635.     b4=false
  1636.     GOSUB 9551:GOSUB 9552:GOSUB 9554:GOSUB 9555
  1637.   END IF
  1638.   GOSUB 9550
  1639.   GOTO 9512
  1640. END IF
  1641. COLOR 1,0:LOCATE 4,23:IF b2 THEN PRINT " ja " :ELSE PRINT "nein"
  1642. 9516 
  1643. COLOR 0,1:LOCATE 4,56:IF b3 OR NOT(b2) THEN PRINT " ja " :ELSE PRINT "nein"
  1644. 9518 
  1645. taste q
  1646. IF q=129 THEN COLOR 1,0:RETURN haupt
  1647. IF q=134 THEN GOSUB 9565:GOTO 9518
  1648. IF men0>0 THEN GOSUB 9560
  1649. IF mausx>-1 THEN
  1650.   COLOR 1,0:LOCATE 4,56:IF b3 OR NOT(b2) THEN PRINT " ja " :ELSE PRINT "nein"
  1651.   GOTO 9570
  1652. END IF  
  1653. IF q=138 GOTO 9580
  1654. IF q<28 OR q>31 THEN 9518
  1655. 9519 
  1656. IF q=30 OR q=31 THEN
  1657.   b3=NOT(b3)AND b2
  1658.   IF b3 THEN
  1659.     b4=false
  1660.     b5=false         
  1661.     GOSUB 9552:GOSUB 9553
  1662.   END IF
  1663.   GOSUB 9551
  1664.   GOTO 9516
  1665. ELSE
  1666.   COLOR 1,0:LOCATE 4,56:IF b3 OR NOT(b2) THEN PRINT " ja " :ELSE PRINT "nein"
  1667.   IF q=28 GOTO 9512 :ELSE GOTO 9520
  1668. END IF
  1669. 9520 
  1670. COLOR 0,1:LOCATE 7,23:IF b4 THEN PRINT " ja " :ELSE PRINT "nein"
  1671. 9522 
  1672. taste q
  1673. IF q=129 THEN COLOR 1,0:RETURN haupt
  1674. IF q=134 THEN GOSUB 9565:GOTO 9522
  1675. IF men0>0 THEN GOSUB 9560
  1676. IF mausx>-1 THEN
  1677.   COLOR 1,0:LOCATE 7,23:IF b4 THEN PRINT " ja " :ELSE PRINT "nein"
  1678.   GOTO 9570
  1679. END IF  
  1680. IF q=138 GOTO 9580
  1681. IF q<28 OR q>31 THEN 9522
  1682. 9523 
  1683. IF q=30 OR q=31 THEN
  1684.   b4=NOT(b4)
  1685.   IF b4 THEN
  1686.     b2=true
  1687.     b7=false
  1688.     GOSUB 9550:GOSUB 9555
  1689.   END IF
  1690.   GOSUB 9552
  1691.   GOTO 9520
  1692. ELSE
  1693.   COLOR 1,0:LOCATE 7,23:IF b4 THEN PRINT " ja " :ELSE PRINT "nein"
  1694.   IF q=28 GOTO 9516 :ELSE GOTO 9524
  1695. END IF
  1696. 9524 
  1697. COLOR 0,1:LOCATE 10,23:IF b5 THEN PRINT " ja " :ELSE PRINT "nein"
  1698. 9526 
  1699. taste q
  1700. IF q=129 THEN COLOR 1,0:RETURN haupt
  1701. IF q=134 THEN GOSUB 9565:GOTO 9526
  1702. IF men0>0 THEN GOSUB 9560
  1703. IF mausx>-1 THEN
  1704.   COLOR 1,0:LOCATE 10,23:IF b5 THEN PRINT " ja " :ELSE PRINT "nein"
  1705.   GOTO 9570
  1706. END IF
  1707. IF q=138 GOTO 9580
  1708. IF q<28 OR q>31 THEN 9526
  1709. 9527 
  1710. IF q=30 OR q=31 THEN
  1711.   b5=NOT(b5)
  1712.   IF b5 THEN
  1713.     b3=false
  1714.     b6=false
  1715.     b7=false
  1716.     GOSUB 9551:GOSUB 9554:GOSUB 9555
  1717.   END IF
  1718.   GOSUB 9553
  1719.   GOTO 9524
  1720. ELSE
  1721.   COLOR 1,0:LOCATE 10,23:IF b5 THEN PRINT " ja " :ELSE PRINT "nein"
  1722.   IF q=28 GOTO 9520 :ELSE GOTO 9528
  1723. END IF
  1724. 9528 
  1725. COLOR 0,1:LOCATE 13,23:IF b6 THEN PRINT " ja " :ELSE PRINT "nein"
  1726. 9530 
  1727. taste q
  1728. IF q=129 THEN COLOR 1,0:RETURN haupt
  1729. IF q=134 THEN GOSUB 9565:GOTO 9530
  1730. IF men0>0 THEN GOSUB 9560
  1731. IF mausx>-1 THEN
  1732.   COLOR 1,0:LOCATE 13,23:IF b6 THEN PRINT " ja " :ELSE PRINT "nein"
  1733.   GOTO 9570
  1734. END IF
  1735. IF q=138 GOTO 9580
  1736. IF q<28 OR q>31 THEN 9530
  1737. 9531 
  1738. IF q=30 OR q=31 THEN
  1739.   b6=NOT(b6)
  1740.   IF b6 THEN
  1741.     b2=true
  1742.     b5=false
  1743.     b7=false
  1744.     GOSUB 9550:GOSUB 9553:GOSUB 9555
  1745.   END IF
  1746.   GOSUB 9554
  1747.   GOTO 9528
  1748. ELSE
  1749.   COLOR 1,0:LOCATE 13,23:IF b6 THEN PRINT " ja " :ELSE PRINT "nein"
  1750.   IF q=28 GOTO 9524 :ELSE GOTO 9532
  1751. END IF
  1752. 9532 
  1753. COLOR 0,1:LOCATE 16,56:IF b7 THEN PRINT " ja " :ELSE PRINT "nein"
  1754. 9534 
  1755. taste q
  1756. IF q=129 THEN COLOR 1,0:RETURN haupt
  1757. IF q=134 THEN GOSUB 9565:GOTO 9534
  1758. IF men0>0 THEN GOSUB 9560
  1759. IF mausx>-1 THEN
  1760.   COLOR 1,0:LOCATE 16,56:IF b7 THEN PRINT " ja " :ELSE PRINT "nein"
  1761.   GOTO 9570
  1762. END IF
  1763. IF q=138 GOTO 9580
  1764. IF q<28 OR q>31 OR q=29 THEN 9534
  1765. 9535 
  1766. IF q=30 OR q=31 THEN
  1767.   b7=NOT(b7)
  1768.   IF b7 THEN
  1769.     b2=true
  1770.     b4=false
  1771.     b5=false
  1772.     b6=false
  1773.     GOSUB 9550:GOSUB 9552:GOSUB 9553:GOSUB 9554
  1774.   END IF
  1775.   GOSUB 9555
  1776.   GOTO 9532
  1777. END IF
  1778. COLOR 1,0:LOCATE 16,56:IF b7 THEN PRINT " ja " :ELSE PRINT "nein"
  1779. GOTO 9528
  1780.   
  1781. 9550 
  1782.  IF b2 THEN col=2 :ELSE col=3
  1783.  COLOR col,0
  1784.  IF b2 AND (b3 OR b6 OR b7) THEN GOSUB mus4:PATTERN ,muster
  1785.  LINE (28,21)-(164,34),col,bf
  1786.  LINE (27,20)-(165,35),1,b
  1787.  COLOR 1,col:LOCATE 4,5:PRINT "Vorhandene Hefte"
  1788.  IF b2 AND (b3 OR b6 OR b7) THEN GOSUB mus11:PATTERN ,muster
  1789.  COLOR 1,0
  1790.  LOCATE 4,23:IF b2 THEN PRINT " ja " :ELSE PRINT "nein"
  1791. RETURN 
  1792. 9551 
  1793.  IF b3 OR NOT(b2) THEN col=2 :ELSE col=3
  1794.  COLOR col,0
  1795.  IF NOT(b3) AND (NOT (b2) OR b4 OR b5) THEN GOSUB mus4:PATTERN ,muster
  1796.  LINE (308,21)-(428,34),col,bf
  1797.  LINE (307,20)-(429,35),1,b
  1798.  COLOR 1,col:LOCATE 4,40:PRINT "fehlende Hefte"
  1799.  IF NOT(b3) AND (NOT(b2) OR b4 OR b5) THEN GOSUB mus11:PATTERN ,muster
  1800.  COLOR 1,0
  1801.  LOCATE 4,56:IF b3 OR NOT(b2) THEN PRINT " ja " :ELSE PRINT "nein"
  1802. RETURN 
  1803. 9552 
  1804.  IF b4 THEN col=2 :ELSE col=3
  1805.  COLOR col,0
  1806.  IF NOT(b4) AND(b7 OR b3 OR NOT(b2)) THEN GOSUB mus4:PATTERN ,muster
  1807.  LINE (28,45)-(140,58),col,bf
  1808.  LINE (27,44)-(141,59),1,b
  1809.  COLOR 1,col:LOCATE 7,5:PRINT "nur Mehrfache"
  1810.  IF NOT(b4) AND (b7 OR b3 OR NOT(b2)) THEN GOSUB mus11:PATTERN ,muster
  1811.  COLOR 1,0
  1812.  LOCATE 7,23:IF b4 THEN PRINT " ja " :ELSE PRINT "nein"
  1813. RETURN 
  1814. 9553 
  1815.  IF b5 THEN col=2 :ELSE col=3
  1816.  IF NOT(b5)AND (b6 OR b7 OR b3) THEN GOSUB mus4:PATTERN ,muster
  1817.  LINE (28,69)-(148,82),col,bf
  1818.  LINE (27,68)-(149,83),1,b
  1819.  COLOR 1,col:LOCATE 10,5:PRINT "zusammengefaßt"
  1820.  IF NOT(b5)AND (b6 OR b7 OR b3) THEN GOSUB mus11:PATTERN ,muster
  1821.  COLOR 1,0
  1822.  LOCATE 10,23:IF b5 THEN PRINT " ja " :ELSE PRINT "nein"
  1823. RETURN      
  1824. 9554 
  1825.  IF b6 THEN col=2 :ELSE col=3
  1826.  IF NOT(b6) AND (NOT(b2) OR b5 OR b7) THEN GOSUB mus4:PATTERN ,muster
  1827.  LINE (28,93)-(124,106),col,bf
  1828.  LINE (27,92)-(125,107),1,b
  1829.  COLOR 1,col:LOCATE 13,5:PRINT "mit Zustand"
  1830.  IF NOT(b6) AND (NOT(b2) OR b5 OR b7) THEN GOSUB mus11:PATTERN ,muster
  1831.  COLOR 1,0
  1832.  LOCATE 13,23:IF b6 THEN PRINT " ja " :ELSE PRINT "nein"
  1833. RETURN
  1834. 9555 
  1835. IF b7 THEN col=2 :ELSE col=3
  1836.  IF NOT(b7) AND (NOT(b2) OR b4 OR b5 OR b6) THEN GOSUB mus4:PATTERN ,muster
  1837.  LINE (28,117)-(428,130),col,bf
  1838.  LINE (27,116)-(429,131),1,b
  1839.  COLOR 1,col:LOCATE 16,5:PRINT "zusammengefaßt mit eingeschränkter Zustandsangabe"
  1840.  IF NOT(b7) AND (NOT(b2) OR b4 OR b5 OR b6) THEN GOSUB mus11:PATTERN ,muster
  1841.  COLOR 1,0
  1842.  LOCATE 16,56:IF b7 THEN PRINT " ja " :ELSE PRINT "nein"
  1843. RETURN
  1844.  
  1845. 9560 
  1846. COLOR 1,0
  1847. IF men1<=vanz THEN
  1848.   men1=men1-1
  1849.   b2=-(druckbits(men1) AND 1)
  1850.   b3=-SGN(druckbits(men1) AND 2)
  1851.   b4=-SGN(druckbits(men1) AND 4)
  1852.   b5=-SGN(druckbits(men1) AND 8)
  1853.   b6=-SGN(druckbits(men1) AND 16)
  1854.   b7=-SGN(druckbits(men1) AND 32)
  1855.   ja1$=trenn$(men1,10)
  1856.   ja2$=trenn$(men1,11)
  1857.   IF b2 IMP b3 THEN
  1858.     nv1$=trenn$(men1,12)
  1859.     nv2$=trenn$(men1,13)
  1860.   END IF
  1861.   IF b7 THEN
  1862.     FOR j=0 TO zmax-1
  1863.       zust$(j)=trenn$(men1,j)
  1864.     NEXT j
  1865.   END IF
  1866.   IF b6 THEN
  1867.     FOR j=0 TO zmax-1
  1868.       zust$=RIGHT$(STR$(j),LEN(STR$(j))-1)
  1869.     NEXT j
  1870.   END IF          
  1871.   GOSUB 9550:GOSUB 9551:GOSUB 9552:GOSUB 9553:GOSUB 9554:GOSUB 9555
  1872. ELSEIF men1=vanz+2 AND vanz>0 THEN
  1873.   CLS
  1874.   LINE (544,140)-(576,156),2,bf
  1875.   COLOR 3,2:LOCATE 19,70:PRINT "OK"
  1876.   LINE (543,139)-(577,157),3,b
  1877.   COLOR 1,0
  1878.   IF vanz>1 THEN
  1879.     LOCATE 5,5:PRINT "Welche Voreinstellung soll gelöscht werden (0 - ";vanz-1;") ?"
  1880.     q=-1
  1881.     WHILE q<0 OR q>vanz-1
  1882.       taste q
  1883.       q=q-ASC("0")
  1884.       IF men0=4 THEN
  1885.         q=men1-1
  1886.       END IF
  1887.     WEND
  1888.   END IF
  1889.   LOCATE 7,5:PRINT druck$(q)
  1890.   LOCATE 22,5:PRINT "CR: löschen   F10: nicht löschen"
  1891.   mausx=-1:q1=0
  1892.   WHILE NOT(mausx>543 AND mausx<577 AND mausy>139 AND mausy<157) AND q1<>13 AND q1<>138 AND q1<>129
  1893.     taste q1
  1894.   WEND
  1895.   IF q1<>138 AND q1<> 129 THEN
  1896.     IF q<vanz-1 THEN
  1897.       FOR j=q+1 TO vanz-1
  1898.         druck$(j-1)=druck$(j)
  1899.         druckbits(j-1)=druckbits(j)
  1900.         FOR jj=0 TO 13
  1901.           trenn$(j-1,jj)=trenn$(j,jj)
  1902.         NEXT jj
  1903.       NEXT j
  1904.     END IF
  1905.     vanz=vanz-1
  1906.     druck$(vanz)=""
  1907.     druckbits(vanz)=255
  1908.     FOR jj=0 TO 13
  1909.       trenn$(vanz,jj)=""
  1910.     NEXT jj
  1911.     voraend=1
  1912.   END IF
  1913.   RETURN 9500
  1914. ELSEIF men1=vanz+1 AND vanz<10 THEN
  1915.   CLS       
  1916.   nr=0
  1917.   IF vanz>0 THEN
  1918.     LOCATE 5,5:PRINT "Welche Nummer soll die Voreinstellung haben (0 - ";vanz;") ?"
  1919.     nr=-1
  1920.     WHILE nr<0 OR nr>vanz
  1921.       taste q
  1922.       nr=q-ASC("0")
  1923.       IF men0=4 THEN
  1924.         nr=men1-1
  1925.       END IF
  1926.     WEND
  1927.   END IF  
  1928.   IF nr<vanz THEN
  1929.     FOR j=vanz TO nr+1 STEP -1
  1930.       druck$(j)=druck$(j-1)
  1931.       druckbits(j)=druckbits(j-1)
  1932.       FOR jj=0 TO 13
  1933.         trenn$(j,jj)=trenn$(j-1,jj)
  1934.       NEXT jj
  1935.     NEXT j
  1936.   END IF
  1937.   LOCATE 7,5:PRINT "Name:"
  1938.   q$=""
  1939.   WHILE q$=""
  1940.     LOCATE 7,11:lies q$,30
  1941.   WEND
  1942.   druck$(nr)=q$
  1943.   MENU 4,vanz+1,0
  1944.   MENU 4,vanz+2,0
  1945.   men0=0:men1=0
  1946.   GOSUB 9510
  1947.   CLS:LOCATE 2,5:PRINT druck$(nr)
  1948.   druckbits(nr)=-b2-2*b3-4*b4-8*b5-16*b6-32*b7
  1949.   trenn$(nr,10)="<<":trenn$(nr,11)=">>"
  1950.   LOCATE 4,5:PRINT "Trennzeichen für Jahrgang: ";:lies trenn$(nr,10),5
  1951.   LOCATE 4,40:lies trenn$(nr,11),5    
  1952.   IF (b2 IMP b3) THEN
  1953.     trenn$(nr,12)="(":trenn$(nr,13)=")"
  1954.     LOCATE 6,5:PRINT "Trennzeichen für Fehlende: ";:lies trenn$(nr,12),5
  1955.     LOCATE 6,40:lies trenn$(nr,13),5
  1956.   END IF    
  1957.   IF b7 THEN
  1958.     LOCATE 8,5:PRINT "Zustand, Bezeichnung"
  1959.     q$=""
  1960.     FOR j=0 TO zmax-1
  1961.       LOCATE 10+j,7:PRINT j
  1962.       LOCATE 10+j,12:lies q$,5
  1963.       trenn$(nr,j)=q$
  1964.     NEXT j
  1965.   END IF
  1966.   druckbits(vanz+1)=255
  1967.   voraend=1
  1968.   RETURN 9500
  1969. END IF
  1970. RETURN     
  1971. 9565 
  1972. WINDOW 2,"",(10,10)-(600,160),2
  1973. CLS
  1974.  LOCATE 2,5:PRINT "Trennzeichen für Jahrgang: ";:lies ja1$,5
  1975.  LOCATE 2,40:lies ja2$,5    
  1976.  IF (b2 IMP b3) THEN
  1977.    LOCATE 4,5:PRINT "Trennzeichen für Fehlende: ";:lies nv1$,5
  1978.    LOCATE 4,40:lies nv2$,5
  1979.  END IF    
  1980.  IF b7 THEN
  1981.    LOCATE 6,5:PRINT "Zustand, Bezeichnung"
  1982.    q$=""
  1983.    FOR j=0 TO zmax-1
  1984.      LOCATE 8+j,7:PRINT j
  1985.      LOCATE 8+j,12:lies q$,5
  1986.      zust$(j)=q$
  1987.    NEXT j
  1988.  END IF
  1989. WINDOW CLOSE 2
  1990. RETURN
  1991.  
  1992. 9570 
  1993.  IF mausx>27 AND mausx<165 AND mausy>20 AND mausy<35 THEN q=30:GOTO 9515
  1994.  IF mausx>307 AND mausx<429 AND mausy>20 AND mausy<35 THEN q=30:GOTO 9519
  1995.  IF mausx>27 AND mausx<141 AND mausy>44 AND mausy<59 THEN q=30:GOTO 9523
  1996.  IF mausx>27 AND mausx<149 AND mausy>68 AND mausy<83 THEN q=30:GOTO 9527
  1997.  IF mausx>27 AND mausx<125 AND mausy>92 AND mausy<107 THEN q=30:GOTO 9531
  1998.  IF mausx>27 AND mausx<429 AND mausy>116 AND mausy<131 THEN q=30:GOTO 9535
  1999.  IF mausx>543 AND mausx<577 AND mausy>139 AND mausy<157 THEN 9580
  2000. GOTO 9512
  2001. 9580 
  2002.  COLOR 1,0
  2003. RETURN
  2004. 9600 
  2005. CLS:ig=0:q1=0
  2006. le$=SPACE$(de(3))
  2007. ii=(de(1)\2)-2
  2008. zq=((FRE(-1)-20000)\(ii*(de(3)+2)))*ii
  2009. q1$=LEFT$(UCASE$(zwsp$),4)
  2010. IF (q1$="RAD:" OR q1$="RAM:") AND zq<ii THEN
  2011.   LOCATE 10,10:PRINT "zu wenig Speicherplatz vorhanden"
  2012.   taste q
  2013.   GOTO haupt
  2014. END IF
  2015. fehler=0
  2016. ON ERROR GOTO fehlerausw
  2017. OPEN zwsp$+"comtext" AS 2 LEN=de(3)
  2018. ON ERROR GOTO 0
  2019. IF fehler=64 OR fehler=68 OR fehler=61 OR fehler=53 OR fehler=74 THEN
  2020.   CLOSE 2
  2021.   LOCATE 10,10:PRINT "Fehler beim Öffnen des Zwischenspeichers (Taste)"
  2022.   taste q
  2023.   GOTO haupt
  2024. END IF
  2025. FIELD 2,de(3) AS zwd$
  2026. q1$="":c$="":io=1
  2027. belegeram q
  2028. IF NOT(q) THEN
  2029.   LOCATE 10,10:PRINT "zu wenig Speicherplatz vorhanden"
  2030.   taste q
  2031.   CLOSE 2
  2032.   GOTO haupt
  2033. END IF
  2034. io=0
  2035. IF o=0 THEN FOR i=1 TO an:index=in(i)
  2036. IF o=0 AND ((dr(index)AND 1)=0) AND (au>0) THEN 10000
  2037. IF b4 AND z(zmax+1,index)=0 THEN 10000
  2038. IF NOT(b2) THEN
  2039.   q=0:FOR j=0 TO zmax-1
  2040.     q=q+z(j,index)
  2041.   NEXT j
  2042.   q=z(zmax,index)-q+z(zmax+1,index)
  2043.   IF q=0 THEN 10000
  2044. END IF  
  2045. LOCATE 10,10:PRINT USING "\                            \";t$(index)
  2046. oeffne weg$+t$(index),1,satzl,0
  2047. FIELD 1,satzl AS d$
  2048. laenge=LOF(1)/satzl
  2049. b8=j(index)>-1:n1=0:n2=0:lj=-1:IF b8 THEN n1=-1
  2050. IF (io-1) MOD ii=0 AND io>1 THEN GOSUB 15000
  2051. IF c$<>"" THEN LSET zwd$=c$:PUT 2,io
  2052. io=io+1
  2053. c$=t$(index)+" "
  2054. FOR l=1 TO laenge
  2055.   GET 1,l:decodiere d$
  2056.   IF b3 OR dat(0)=0 THEN
  2057.     b14=dat(0)=0
  2058.     jahreszahl l,j,nr
  2059.     GOSUB 12000
  2060.     IF ASC(INKEY$+" ")=129 THEN
  2061.       LOCATE 21,10:PRINT "CR = Hauptmenü, F10 = weiter"
  2062.       q=0
  2063.       WHILE q<>13 AND q<>129 AND q<>138
  2064.         taste q
  2065.       WEND
  2066.       IF q=13 OR q=129 THEN 10110
  2067.     END IF
  2068.   END IF
  2069. NEXT l
  2070. 10000 
  2071. CLOSE 1
  2072. IF b5 THEN
  2073.   IF n1>0 THEN GOSUB 14400:GOSUB 14900
  2074. ELSEIF b7 THEN
  2075.   IF n1>0 THEN GOSUB 14400:GOSUB 14300:GOSUB 14900
  2076. END IF
  2077. IF o=0 THEN NEXT i:au=0
  2078. IF c$<>"" THEN LSET zwd$=c$:PUT 2,io
  2079. 10021 
  2080. CLS
  2081. LOCATE 1,36:PRINT "Ausdruck"
  2082. LOCATE 8,3:PRINT "Bitte den Drucker so einstellen, daß der Druckkopf am Blattangang steht."
  2083. LOCATE 9,3:PRINT "Dann Taste drücken."
  2084. taste q
  2085. IF q=129 THEN 10110
  2086. IF ersterDruck THEN
  2087.   OPEN "prt:" FOR OUTPUT AS 4
  2088.   PRINT #4,CHR$(7);
  2089.   CLOSE 4
  2090.   ersterDruck=false
  2091. END IF
  2092. OPEN de$(3) FOR OUTPUT AS 4
  2093. PRINT #4,de$(2);
  2094. CLOSE 4
  2095. OPEN "prt:" FOR OUTPUT AS 4
  2096. IF ig>0 THEN
  2097.   LOCATE 11,3:PRINT "Bitte die Diskette mit den Druckdaten einlegen + Taste"
  2098.   taste q
  2099.   oeffne comtext$,3,de(3),0
  2100.   FIELD 3,de(3) AS comt$
  2101. END IF  
  2102. se=2*(((io-1)\ii+ig)\2)+1:REM Anzahl benutzter Seiten -1
  2103. FOR j=0 TO se\2
  2104.   FOR k=1 TO ii
  2105.     IF ASC(INKEY$+" ")=129 THEN 10050
  2106.     IF j<ig THEN
  2107.       GET 3,j*ii+k
  2108.       c$=comt$+de$(4)
  2109.     ELSEIF (j-ig)*ii+k<=io THEN
  2110.       GET 2,(j-ig)*ii+k
  2111.       c$=zwd$+de$(4)
  2112.     ELSE  
  2113.       c$=le$+de$(4)
  2114.     END IF
  2115.     IF se-j<ig THEN
  2116.       GET 3,(se-j)*ii+k
  2117.       c$=c$+comt$
  2118.     ELSEIF (se-j-ig)*ii+k <=io THEN
  2119.       GET 2,(se-j-ig)*ii+k
  2120.       c$=c$+zwd$
  2121.     END IF
  2122.     PRINT #4,c$
  2123.   NEXT k
  2124.   CLOSE 4
  2125.   OPEN de$(3) FOR OUTPUT AS 4
  2126.   PRINT #4,de$(1);:PRINT #4,de$(1);
  2127.   CLOSE 4
  2128.   OPEN "prt:" FOR OUTPUT AS 4
  2129. NEXT j
  2130. 10050 
  2131. CLOSE 4:IF ig>0 THEN CLOSE 3
  2132. LOCATE 20,5:PRINT "CR = Ende, F10 = nochmal ausdrucken"
  2133. q=0
  2134. WHILE q<>13 AND q<>138 AND q<>129
  2135.   taste q
  2136. WEND
  2137. IF q=138 THEN 10021
  2138. 10110 
  2139. CLOSE 2:KILL zwsp$+"comtext":au=0
  2140. ON ERROR GOTO fehlerausw
  2141. IF ig>0 THEN KILL comtext$
  2142. ON ERROR GOTO 0
  2143. MENU 1,0,1:MENU 2,0,1:MENU 3,0,1:MENU 4,0,0,""
  2144. q1=0:GOTO haupt
  2145.  
  2146. SUB belegeram(q) STATIC
  2147. SHARED zwd$,de(),io,ii,fehler,true,false
  2148. LSET zwd$=SPACE$(de(3))
  2149. fehler=0:q=true
  2150. ON ERROR GOTO fehlerausw
  2151. FOR x=io TO io+ii-1
  2152.   PUT 2,x
  2153. IF fehler=61 THEN
  2154.   q=false
  2155.   GOTO be
  2156. END IF
  2157. NEXT x
  2158. be:
  2159. END SUB
  2160.  
  2161. 12000 
  2162.  IF b8 THEN b9= j<>lj :ELSE b9=false 
  2163.  IF b9 THEN lj=j
  2164.  b10= n1=-1
  2165.  b11= n1=0
  2166.  IF b4 THEN 
  2167.    b12=geszahl>1
  2168.  ELSEIF NOT(b2) THEN
  2169.    b12=geszahl=0
  2170.  ELSE
  2171.    b12=geszahl>0   
  2172.  END IF
  2173.  b13=zust$(bestZust)=alterzust$
  2174. REM entscheidungstabelle
  2175.  b20=b8 IMP NOT(b9 OR b10)
  2176.  b21=b3 IMP b14
  2177.  b22=b8 AND b9
  2178.  b23=NOT(b3 OR b12)
  2179.  b24=NOT(b5 OR b6 OR b7)
  2180.  b25=b3 AND NOT(b12)AND b14
  2181.  b26=b10 OR(b9 AND b11)
  2182.  b27=b10 OR b11
  2183.  IF (b23 AND(((b24 OR b6)AND NOT(b22)) OR (((NOT(b8)AND b11)OR (b8 AND((NOT(b9)AND b11)OR b10)))AND((NOT(b4)AND(b5 OR b7))OR(b2 AND b5))))) OR (b3 AND NOT(b14)AND(((b6 OR NOT(b7))AND NOT(b22))OR (b7 AND (b8 IMP(b9 IMP b10))))) THEN
  2184.  ELSEIF b20 AND((NOT(b3) AND b24 AND b12)OR(b3 AND b14 AND(NOT(b12)AND(b6 OR(b7 AND b11)))OR b24)) THEN
  2185.    GOSUB 14200:q1$=q1$+",":GOSUB 14900 '2
  2186.  ELSEIF b6 AND b12 AND b20 AND b21 THEN
  2187.    GOSUB 14200:GOSUB 14300:GOSUB 14900 '17
  2188.  ELSEIF NOT(b11) AND b12 AND b20 AND((NOT(b3)AND b5)OR(b7 AND b13 AND b21)) THEN
  2189.    n2=nr '6
  2190.  ELSEIF b7 AND b12 AND b20 AND b21 AND NOT(b11 OR b13) THEN
  2191.    GOSUB 14400:q1$=q1$+":"+alterzust$+",":GOSUB 14900:n1=nr:alterzust$=zust$(bestZust) '12
  2192.  ELSEIF b11 AND NOT(b22)AND b7 AND b12 AND b21 THEN
  2193.    n1=nr:alterzust$=zust$(bestZust) '13
  2194.  ELSEIF b7 AND b20 AND NOT(b11)AND b23 THEN
  2195.    GOSUB 14400:q1$=q1$+":"+alterzust$+",":GOSUB 14900 '11
  2196.  ELSEIF b25 AND b7 AND b20 AND NOT(b11) THEN
  2197.    GOSUB 14400:q1$=q1$+":"+alterzust$+",":GOSUB 14900:GOSUB 14200:q1$=q1$+",":GOSUB 14900 '19
  2198.  ELSEIF NOT(b11 OR b22)AND b23 AND b5 THEN
  2199.    GOSUB 14400:q1$=q1$+",":GOSUB 14900 '5
  2200.  ELSEIF NOT(b3)AND b5 AND b11 AND b12 AND b20 THEN
  2201.    n1=nr '7
  2202.  ELSEIF b8 AND((b9 OR b10)AND(NOT(b3)AND b12 AND b24)OR(b3 AND b14 AND((b6 AND NOT(b12))OR(b24 AND b10 AND NOT(b9)))))OR(b3 AND b7 AND NOT(b12)AND b14 AND b26) THEN
  2203.    GOSUB 14600:GOSUB 14200:n1=0:q1$=q1$+",":GOSUB 14900 '3
  2204.  ELSEIF b22 AND((b23 AND(b24 OR((b5 OR b7)AND b11)OR b6))OR(b3 AND NOT(b14)AND(b6 OR(b7 IMP b11)))) THEN
  2205.    n1=-1 '4
  2206.  ELSEIF b6 AND b8 AND b12 AND b21 AND (b9 OR b10) THEN
  2207.    GOSUB 14600:GOSUB 14200:GOSUB 14300:GOSUB 14900:n1=0 '18
  2208.  ELSEIF b7 AND b8 AND b12 AND b26 AND b21 THEN
  2209.    GOSUB 14600:GOSUB 14900:n1=nr:alterzust$=zust$(bestZust) '16
  2210.  ELSEIF NOT(b3) AND b5 AND b8 AND b12 AND b26 THEN
  2211.    GOSUB 14600:n1=nr:GOSUB 14900 '8
  2212.  ELSEIF b3 AND b24 AND b22 AND b14 THEN
  2213.    GOSUB 14600:GOSUB 14200:q1$=q1$+",":GOSUB 14900:n1=0 '21
  2214.  ELSEIF b7 AND b22 AND b12 AND b21 AND NOT(b27) THEN
  2215.    GOSUB 14400:q1$=q1$+":"+alterzust$+",":GOSUB 14900:GOSUB 14600:GOSUB 14900:n1=nr:alterzust$=zust$(bestZust) '15
  2216.  ELSEIF b5 AND b22 AND b12 AND NOT(b3 OR b27) THEN
  2217.    GOSUB 14400:q1$=q1$+",":GOSUB 14900:GOSUB 14600:n1=nr:GOSUB 14900 '10
  2218.  ELSEIF b7 AND b22 AND NOT(b27) AND(b23 OR NOT(b21)) THEN
  2219.    GOSUB 14400:q1$=q1$+":"+alterzust$+",":GOSUB 14900:n1=-1 '14
  2220.  ELSEIF b5 AND b22 AND NOT(b27) AND b23 THEN
  2221.    GOSUB 14400:q1$=q1$+",":GOSUB 14900:n1=-1 '9
  2222.  ELSEIF b25 AND b7 AND b22 AND NOT(b27) THEN
  2223.    GOSUB 14400:q1$=q1$+":"+alterzust$+",":GOSUB 14900:GOSUB 14600:GOSUB 14200:q1$=q1$+",":GOSUB 14900 '20
  2224.  ELSE  
  2225.    PRINT  "Fehler in Wertetabelle":STOP
  2226.  END IF
  2227. RETURN
  2228.  
  2229. REM aktuelle nr schreiben
  2230. 14200 
  2231.  IF (b2 IMP b3)AND NOT(b12) THEN
  2232.    q1$=q1$+nv1$+RIGHT$(STR$(nr),LEN(STR$(nr))-1)+nv2$
  2233.  ELSE  
  2234.    q1$=q1$+RIGHT$(STR$(nr),LEN(STR$(nr))-1)
  2235.  END IF
  2236. RETURN
  2237. REM zust schreiben
  2238. 14300 
  2239.  IF NOT b4 THEN
  2240.    IF b6 THEN q1$=q1$+":"+zust$(bestZust) :ELSE q1$=q1$+":"+alterzust$
  2241.  ELSE
  2242.    q1$=q1$+"("
  2243.    FOR zu=1 TO zmax
  2244.      IF dat(zu)>0 THEN q1$=q1$+zust$(zu-1)+","
  2245.    NEXT zu
  2246.    q1$=LEFT$(q1$,LEN(q1$)-1)+")"
  2247.  END IF
  2248.  q1$=q1$+","
  2249. RETURN
  2250.  
  2251. REM n1 bis n2 schreiben
  2252. 14400 
  2253.  IF n2=0 THEN
  2254.    q1$=q1$+RIGHT$(STR$(n1),LEN(STR$(n1))-1)
  2255.  ELSE
  2256.    q1$=q1$+RIGHT$(STR$(n1),LEN(STR$(n1))-1)+"-"+RIGHT$(STR$(n2),LEN(STR$(n2))-1)
  2257.  END IF
  2258. n1=0:n2=0:RETURN
  2259.  
  2260. REM jahrgang schreiben
  2261. 14600 
  2262.  q1$=q1$+ja1$+RIGHT$(STR$(j),LEN(STR$(j))-1)+ja2$:lj=j:RETURN
  2263.  
  2264. REM q1 nach ram uebertragen
  2265. 14900 
  2266.  IF LEN(c$+q1$)>de(3) AND ((io-1) MOD ii)=0 AND io>1 THEN GOSUB 15000
  2267.  IF LEN(c$+q1$)> de(3) THEN
  2268.    LSET zwd$=c$:PUT 2,io
  2269.    io=io+1
  2270.    c$=q1$
  2271.  ELSE
  2272.    c$=c$+q1$
  2273.  END IF
  2274. q1$="":RETURN
  2275.  
  2276. 15000 
  2277.  zq=((FRE(-1)-20000)\(ii*(de(3)+2)))*ii
  2278.  q=true
  2279.  IF zq>=ii THEN CALL belegeram(q)
  2280.  IF zq<ii OR NOT(q) THEN
  2281.    CLOSE 1
  2282.    CLS
  2283.    IF ig>0 THEN
  2284. 15015 
  2285.      q1=1:oeffne comtext$,3,de(3),q1
  2286.      IF q1=1 THEN
  2287.        LOCATE 5,5:PRINT "Bitte die Diskette mit den Druckdaten einlegen + Taste"
  2288.        taste q
  2289.        IF q=129 THEN RETURN 10110
  2290.        GOTO 15015
  2291.      END IF
  2292.    ELSE  
  2293.      LOCATE 5,5:PRINT "Die Daten müssen jetzt zwischengespeichert werden."
  2294.      LOCATE 7,5:PRINT "Bitte geben Sie einen Pfad ein (nicht RAM:) :"
  2295. 15040 
  2296.      LOCATE 9,5:comtext$="df0:":lies comtext$,30
  2297.      IF ASC(comtext$+" ")=129 THEN RETURN 10110
  2298.      IF UCASE$(LEFT$(comtext$,4))="RAM:" OR UCASE$(LEFT$(comtext$,4))="RAD:" THEN 15040
  2299.      IF RIGHT$(comtext$,1)<>":"AND RIGHT$(comtext$,1) <>"/" THEN comtext$=comtext$+"/"
  2300.      comtext$=comtext$+"comictext"
  2301.      fehler=0
  2302.      ON ERROR GOTO fehlerausw
  2303.      OPEN comtext$ AS 3 LEN=de(3)
  2304.      ON ERROR GOTO 0
  2305.      IF fehler>0 THEN LOCATE 20,10:PRINT "ungültiger Name":GOTO 15040
  2306.    END IF
  2307.    FIELD 3,de(3) AS comt$
  2308.    q=ig*ii
  2309.    FOR k=1 TO io-1
  2310.      GET 2,k:LSET comt$=zwd$:PUT 3,q+k
  2311.    NEXT k:CLOSE 3
  2312.    ig=ig+io\ii:io=1
  2313.    CLS
  2314. 15400 
  2315.    IF q1=1 THEN
  2316.      LOCATE 5,5:PRINT "Bitte jetzt die Diskette einlegen, bei der unterbrochen wurde."
  2317.      LOCATE 7,5:PRINT "Anschschließend eine Taste drücken:"
  2318.      taste q
  2319.      IF q=129 THEN RETURN 10110
  2320.      oeffne weg$+t$(index),1,satzl,0
  2321.    ELSE
  2322.      q1=1
  2323.      oeffne weg$+t$(index),1,satzl,q1
  2324.      IF q1=1 THEN 15400
  2325.    END IF
  2326.    FIELD 1,satzl AS d$
  2327.    CLS:LOCATE 10,10:PRINT t$(index)
  2328.  END IF
  2329. RETURN
  2330.  
  2331. dateiloeschen:
  2332. GOSUB 4650
  2333. LOCATE 1,28:PRINT " D a t e i   l ö s c h e n "
  2334. LOCATE 3,3:PRINT "Achtung !  Es werden sämtliche Daten von"
  2335. LOCATE 4,3:PRINT t$(index)" gelöscht."
  2336. LOCATE 5,3:PRINT "Bitte bestätigen Sie das Löschen mit Cr,"
  2337. LOCATE 6,3:PRINT "oder brechen Sie ab mit F10"
  2338. q=0
  2339. WHILE q<>13 AND q<>138 AND q<>129
  2340.   taste q 
  2341. WEND
  2342. IF q=138 OR q=129 THEN haupt
  2343. CLS
  2344. oeffne weg$+t$(index),1,satzl,0
  2345. CLOSE 1:KILL weg$+t$(index):va=1
  2346. IF index<an THEN
  2347.   oeffne Pfad$+"Titel",1,34,0
  2348.   FIELD 1,1 AS laenge$,30 AS d$,1 AS jahr$,2 AS mnr$
  2349.   t$(index)=t$(an):j(index)=j(an):maxnr(index)=maxnr(an):dr(index)=dr(an)OR 4
  2350.   LSET laenge$=CHR$(LEN(t$(an)))
  2351.   LSET d$=t$(an)
  2352.   IF j(an)<0 THEN LSET jahr$=CHR$(100) :ELSE LSET jahr$=CHR$(j(an))
  2353.   mnr$=MKI$(maxnr(an)) 
  2354.   PUT 1,index
  2355.   CLOSE 1
  2356.   dr(0)=dr(0)OR 20    
  2357.   FOR j=1 TO an:IF in(j)<>an THEN NEXT j
  2358.   in(j) =index
  2359.   FOR j=0 TO zmax+1
  2360.     z(j,index)=z(j,an)
  2361.   NEXT j
  2362. END IF
  2363. FOR j=i TO an-1
  2364.   in(j)=in(j+1)
  2365. NEXT j
  2366. an=an-1
  2367. aa=aa-1
  2368. va=1
  2369. IF an=0 THEN 
  2370.   MENU 1,1,0:MENU 1,3,0:MENU 1,4,0:MENU 1,5,0
  2371.   MENU 2,0,0
  2372.   MENU 3,1,0
  2373.   MENU 3,3,0
  2374. END IF   
  2375. GOTO haupt
  2376. REM -----
  2377. 16000 
  2378. CLS 
  2379. LOCATE 5,5:PRINT "Die nötigen Dateien wurden nicht gefunden."
  2380. LOCATE 7,5:PRINT "1. Daten rekonstruieren"
  2381. LOCATE 9,5:PRINT "2. Programm beenden"
  2382. LOCATE 11,5:PRINT "3. Pfad wechseln"
  2383. LOCATE 13,5:PRINT "(Die notwendigen Dateien können mit dem Programm Installation erzeugt"
  2384. LOCATE 14,5:PRINT " werden.)"
  2385. q=0
  2386. WHILE q<1 OR q>3
  2387.   taste q
  2388.   q=q-ASC("0")
  2389. WEND
  2390. IF q=2 THEN END
  2391. IF q=1 THEN datenrek :ELSE GOTO pfadwechsel
  2392. REM binäres suchen,i ist Nr. des gefundenen oder -1 falls nicht gef.
  2393. suche:
  2394. 16500 
  2395.  u=1:o=an:q1$=q$:umlaut q1$
  2396.  WHILE u<=o 
  2397.    i=(u+o)\2
  2398.    q2$=t$(in(i)):umlaut q2$
  2399.    IF q1$<q2$ THEN
  2400.      o=i-1
  2401.    ELSEIF q1$>q2$ THEN
  2402.      u=i+1
  2403.    ELSE
  2404.      u=o+1
  2405.    END IF
  2406.  WEND
  2407.  IF UCASE$(q$)<>UCASE$(t$(in(i))) THEN i=-1
  2408. RETURN
  2409. druckereinst:
  2410. CLS:LOCATE 1,30:PRINT "Druckereinstellung"
  2411. LOCATE 3,5:PRINT "Steuerbefehl für:"
  2412. LOCATE 5,4:PRINT "Normale Schrift :"
  2413. LOCATE 7,4:PRINT "Zeilenvorschub  :"
  2414. LOCATE 9,4:PRINT "Kleine Schrift an :"
  2415. LOCATE 12,5:PRINT "Anzahl der "
  2416. LOCATE 14,4:PRINT "Zeilen pro Blatt normal:"
  2417. LOCATE 16,4:PRINT "       bei Kleinschrift:"
  2418. LOCATE 18,4:PRINT "Zeichen pro Zeile bei Kleinschrift :"
  2419. LOCATE 20,4:PRINT "Schnittstelle (SER:/PAR:) :"
  2420. LOCATE 23,3:PRINT "Einstellung mit Cr übernehmen oder mit F10 abändern";
  2421. FOR j=0 TO 2
  2422.   LOCATE 5+2*j,23
  2423.   FOR k=1 TO LEN(de$(j))
  2424.     PRINT ASC(MID$(de$(j),k,1));
  2425.   NEXT k
  2426. NEXT j  
  2427. LOCATE 14,29:PRINT de(0)
  2428. LOCATE 16,29:PRINT de(1)
  2429. LOCATE 18,42:PRINT de(2)
  2430. LOCATE 20,32:PRINT de$(3)
  2431. q=0
  2432. WHILE q<>13 AND q<>138 AND q<>129
  2433.   taste q
  2434. WEND
  2435. IF q=13 OR q=129 THEN haupt
  2436. FOR j=0 TO 2
  2437.   q$=""
  2438.   FOR k=1 TO LEN(de$(j)):q$=q$+STR$(ASC(MID$(de$(j),k,1))):NEXT k
  2439.   de$(j)=""
  2440.   LOCATE 5+2*j,23:PRINT SPACE$(55);
  2441. 16905 
  2442.   LOCATE 5+2*j,23:lies q$,55: IF q$="" THEN 16905
  2443.   q1$="":ii=1
  2444.   FOR k=1 TO LEN(q$)
  2445.     q2$=MID$(q$,k,1)
  2446.     IF (q2$<"0"OR q2$>"9") AND q2$<>" " THEN 16905
  2447.     IF ii<>1 OR q2$<>" " THEN
  2448.       q1$=q1$+q2$:ii=0
  2449.       IF q2$=" " OR k=LEN(q$) THEN
  2450.         IF LEN(q1$)>5 THEN 16905
  2451.         IF VAL (q1$)>255 THEN 16905
  2452.         de$(j)=de$(j)+CHR$(VAL(q1$)):q1$="":ii=1
  2453.       END IF
  2454.     END IF
  2455.   NEXT k  
  2456. NEXT j
  2457. q$=STR$(de(0)):q=0
  2458. long&=0
  2459. WHILE long&<10 OR long&>500
  2460.   LOCATE 14,29 : lies q$,6
  2461.   long&=VAL(q$)
  2462. WEND
  2463. de(0)=long&:q$=STR$(de(1)):long&=0
  2464. WHILE long&<10 OR long&>500
  2465.   LOCATE 16,29 :lies q$,6
  2466.   long&=VAL(q$)
  2467. WEND
  2468. de(1)=long&:q$=STR$(de(2)):long&=0
  2469. WHILE long&<10 OR long&>500
  2470.   LOCATE 18,42 :lies q$,6
  2471.   long&=VAL(q$)
  2472. WEND
  2473. de(2)=long&
  2474. q$=""
  2475. WHILE q$<>"PAR:" AND q$<>"SER:"
  2476.   q$=de$(3)
  2477.   LOCATE 20,32:lies q$,4
  2478.   q$=UCASE$(q$)
  2479. WEND
  2480. de$(3)=q$
  2481. oeffne Pfad$+"Drucker",1,1,0
  2482. CLOSE 1
  2483. OPEN Pfad$+"Drucker"FOR OUTPUT AS 1
  2484. PRINT #1,komplpfad$
  2485. PRINT #1,lib$
  2486. PRINT #1,zwsp$
  2487. FOR k=0 TO 3
  2488.   PRINT #1,CHR$(34)+de$(k)+CHR$(34)
  2489. NEXT k  
  2490. FOR k=0 TO 2
  2491.   PRINT #1,MKI$(de(k));
  2492. NEXT k     
  2493. CLOSE 1:de(3)=(de(2)\2)-2
  2494. de$(4)="    "+SPACE$(de(2) MOD 2)
  2495. GOTO haupt
  2496.  
  2497. SUB oeffne (datname$,nummer,l,rm) STATIC
  2498. SHARED fehler
  2499. ON ERROR GOTO fehlerausw
  2500. op:fehler=0
  2501. OPEN datname$ FOR INPUT AS nummer
  2502. CLOSE nummer
  2503.   IF fehler=74 AND rm=0 THEN op
  2504.   IF fehler=74 THEN op1
  2505.   IF fehler=53 AND rm=0 THEN CALL wechslepfad:GOTO op  
  2506.   IF fehler<>53 OR rm<>1 THEN rm=0:OPEN datname$ AS nummer LEN=l
  2507. op1:ON ERROR GOTO 0
  2508. END SUB
  2509. fehlerausw:
  2510.   fehler=ERR
  2511. RESUME NEXT
  2512.  
  2513. pfadwechsel:
  2514. CLS:fehler=0
  2515. wechslepfad
  2516. ON ERROR GOTO 0
  2517. IF mq=0 THEN RETURN :ELSE GOTO haupt
  2518. SUB wechslepfad STATIC
  2519. SHARED komplpfad$,fehler
  2520. ON ERROR GOTO fehlerausw
  2521. pf1:WINDOW 2,"Bitte den kompletten Pfad eingeben:",(20,20)-(550,70),2
  2522. pf2:LOCATE 1,1:lies komplpfad$,30
  2523.   IF INSTR(komplpfad$,":")=0 THEN pf1
  2524.   CHDIR komplpfad$
  2525.   IF fehler=53 OR fehler=74 THEN fehler=0:WINDOW 2:GOTO pf2
  2526.   IF RIGHT$(komplpfad$,1)<>":" AND RIGHT$(komplpfad$,1)<>"/" THEN komplpfad$=komplpfad$+"/"
  2527.   WINDOW CLOSE 2
  2528. END SUB
  2529.  
  2530. SUB taste (t) STATIC
  2531. SHARED men0,men1,mausx,mausy
  2532. mausx=-1
  2533. mausy=-1
  2534. rq$=""
  2535. tas:
  2536.  SLEEP
  2537.  rq$=INKEY$+CHR$(0)
  2538.  men0=MENU(0)
  2539.  men1=MENU(1)
  2540.  q=MOUSE(0)
  2541.  IF q>0 THEN
  2542.    mausx=MOUSE(1)
  2543.    mausy=MOUSE(2)
  2544.  END IF       
  2545.  t=ASC(rq$)
  2546. IF men0=0 AND t=0 AND mausx=-1 THEN tas
  2547. END SUB
  2548.  
  2549. SUB titelleiste (q) STATIC
  2550. SHARED j(),index,zmax
  2551. IF q=1 THEN
  2552.   LOCATE 1,1:PRINT "Titel:"
  2553.   LOCATE 1,31:IF j(index)>-1 THEN PRINT "Jahr "; 
  2554.   PRINT "  Nr:";
  2555.   FOR j=0 TO zmax-1:PRINT  USING "###";j;:NEXT:PRINT " Gesamt"
  2556. ELSEIF q=2 THEN
  2557.   LOCATE 1,1:PRINT "Titel:"
  2558.   IF j(index)>-1 THEN LOCATE 1,32:PRINT "Jahr"; 
  2559.   LOCATE 1,38:PRINT "Nummer";
  2560. ELSEIF q=3 THEN
  2561.   PRINT #4,"Titel:                        ";
  2562.   IF j(index)>-1 THEN PRINT #4,"Jahr"; :ELSE PRINT #4,"    ";
  2563.   PRINT #4,"   Nr:";
  2564.   FOR j=0 TO zmax-1:PRINT #4,USING "###";j;:NEXT:PRINT #4," Gesamt"
  2565. ELSEIF q=4 THEN
  2566.   PRINT #4,"Titel:                         ";
  2567.   IF j(index)>-1 THEN PRINT #4,"Jahr"; :ELSE PRINT #4,"    ";
  2568.   PRINT #4,"   Nummer"
  2569. END IF
  2570. END SUB
  2571.  
  2572. SUB jahreszahl (zahl,jahr,nummer) STATIC
  2573. SHARED index,j(),maxnr()
  2574.  IF j(index)=-1 THEN
  2575.    nummer=zahl:jahr=-1
  2576.  ELSE
  2577.    jahr=(zahl-1)\maxnr(index)+j(index)
  2578.    nummer=((zahl-1)MOD maxnr(index))+1
  2579.    IF jahr>99 THEN jahr=jahr-100
  2580.  END IF
  2581. END SUB
  2582.  
  2583. SUB lies (n$,ml%) STATIC
  2584. nn$=n$:nurCr=1
  2585. y=CSRLIN:x=POS(0):xakt=1
  2586. schr:LOCATE y,x:PRINT LEFT$(nn$,xakt-1);
  2587.      COLOR 2
  2588.      PRINT MID$(nn$,xakt,1);
  2589.      COLOR 1
  2590.      IF xakt<LEN(nn$) THEN PRINT RIGHT$(nn$,LEN(nn$)-xakt);
  2591.      PRINT l$;:l$=""
  2592. ls: SLEEP:q$=INKEY$:IF q$="" THEN ls
  2593. q=ASC(q$)
  2594. IF q=13 THEN le
  2595. IF q=29 OR q=28 THEN ls
  2596. IF q=31 AND xakt>1 THEN xakt=xakt-1
  2597. IF q=30 AND xakt<=LEN(nn$) THEN xakt=xakt+1
  2598. IF q=30 OR q=31 THEN schr
  2599. nurCr=0
  2600. IF q=8 AND  nn$<>"" AND xakt>1 THEN nn$=LEFT$(nn$,xakt-2)+RIGHT$(nn$,LEN(nn$)-xakt+1):xakt=xakt-1:l$=" ":GOTO schr
  2601. IF q=127 AND nn$<>"" AND xakt<= LEN(nn$) THEN nn$=LEFT$(nn$,xakt-1)+RIGHT$(nn$,LEN(nn$)-xakt):l$=" ":GOTO schr
  2602. IF q=8 OR q=127 GOTO ls
  2603. IF LEN(nn$)=ml% THEN ls
  2604. nn$=LEFT$(nn$,xakt-1)+q$+RIGHT$(nn$,LEN(nn$)-xakt+1)
  2605. xakt=xakt+1
  2606. GOTO schr
  2607. le:
  2608. IF nurCr=0 THEN n$=LEFT$(nn$,xakt-1):LOCATE y,x+xakt-1:PRINT STRING$(LEN(nn$)-xakt+1,32)
  2609. END SUB
  2610.  
  2611. SUB schreibezustaende STATIC
  2612. SHARED zmax,bestZust,dat()
  2613.   LOCATE 12,14:PRINT  "Zustand    ";
  2614.   FOR j=0 TO zmax-1:PRINT  USING"###";j;:NEXT
  2615.   LOCATE 14,14:PRINT  "Anzahl     ";STRING$(bestZust*3,32);
  2616.   FOR j=bestZust+1 TO zmax
  2617.     IF dat(j)=0 THEN PRINT "   "; :ELSE PRINT  USING"###";dat(j);
  2618.   NEXT j
  2619. END SUB
  2620.  
  2621. SUB decodiere(t$) STATIC
  2622. SHARED dec(),geszahl,dat(),zmax,bestZust
  2623. IF t$<>"" THEN
  2624. ass&=0
  2625. Adr&=0
  2626. gadr&=0
  2627. dadr&=0
  2628. bzadr&=0
  2629. Adr&=SADD(t$)
  2630. gadr&=VARPTR(geszahl)
  2631. dadr&=VARPTR(dat(0))
  2632. bzadr&=VARPTR(bestZust)
  2633. ass&=VARPTR(dec(0))
  2634. CALL ass&(Adr&,gadr&,dadr&,zmax,bzadr&)
  2635. END IF
  2636. END SUB
  2637.  
  2638. SUB codiere(t$) STATIC
  2639. SHARED cod(),dat(),zmax,satzl
  2640. t$=STRING$(satzl,0)
  2641. ass&=0
  2642. Adr&=0
  2643. dadr&=0
  2644. Adr&=SADD(t$)
  2645. dadr&=VARPTR(dat(0))
  2646. ass&=VARPTR(cod(0))
  2647. CALL ass&(Adr&,dadr&,zmax)
  2648. END SUB
  2649.  
  2650. SUB umlaut(t$) STATIC
  2651. SHARED um()
  2652. u$=t$+""
  2653. IF u$<>"" THEN
  2654.   ass&=0
  2655.   Adr&=0
  2656.   laenge&=0
  2657.   Adr&=SADD(u$)
  2658.   laenge&=LEN(u$)
  2659.   ass&=VARPTR(um(0))
  2660.   CALL ass&(Adr&,laenge&)
  2661.   t$=u$
  2662. END IF
  2663. END SUB
  2664. REM umlaut
  2665. DATA 0000,0000,0000,002C,0000,03E9,0000,002C
  2666. DATA 48E7,C080,206F,0010,202F,0014,5380,1230
  2667. DATA 0800,0C01,FFE4,6600,000C,11BC,0061,0800
  2668. DATA 6000,0084,0C01,FFC4,6600,000C,11BC,0061
  2669. DATA 0800,6000,0072,0C01,FFF6,6600,000C,11BC
  2670. DATA 006F,0800,6000,0060,0C01,FFD6,6600,000C
  2671. DATA 11BC,006F,0800,6000,004E,0C01,FFFC,6600
  2672. DATA 000C,11BC,0075,0800,6000,003C,0C01,FFDC
  2673. DATA 6600,000C,11BC,0075,0800,6000,002A,0C01
  2674. DATA FFDF,6600,000C,11BC,0073,0800,6000,0018
  2675. DATA 0C01,0028,6300,0010,0C01,005A,6200,0008
  2676. DATA 08F0,0005,0800,51C8,FF66,4CDF,0103,4E75
  2677. DATA 0000,03F2
  2678.  
  2679. REM cod
  2680. DATA 0000,0000,0000,0011,0000,03E9,0000,0011
  2681. DATA 48E7,F0C0,206F,001C,226F,0020,222F,0024
  2682. DATA 5341,E249,6500,0006,343C,0001,3019,E988
  2683. DATA 3619,0243,000F,D003,10C0,51C9,FFF0,0802
  2684. DATA 0000,6600,0008,3011,E948,1080,4CDF,030F
  2685. DATA 4E75,4E71,0000,03F2
  2686. REM decode
  2687. DATA 0000,0000,0000,0025,0000,03E9,0000,0025
  2688. DATA 48E7,F8F0,206F,0028,226F,002C,246F,0030
  2689. DATA 222F,0034,266F,0038,1010,0200,00F0,6600
  2690. DATA 0070,78FF,7400,5341,E249,6500,0006,343C
  2691. DATA 0001,7600,1018,E898,0240,000F,34C0,0C43
  2692. DATA 0000,6600,000C,0C00,0000,6600,0004,5284
  2693. DATA D640,E998,0240,000F,34C0,0C43,0000,6600
  2694. DATA 000C,0C40,0000,6600,0004,5284,D640,51C9
  2695. DATA FFC4,0802,0000,6600,000E,1010,E808,0240
  2696. DATA 000F,3480,D640,3283,3684,4CDF,0F1F,4E75
  2697. DATA 3480,60F6,0000,03F2
  2698.  
  2699. fehlerausw2:
  2700. CALL xClose&(fhandle&)  
  2701. LIBRARY CLOSE
  2702. CLOSE 1
  2703. LOCATE 21,10:PRINT "Fehler beim Sichern"
  2704. taste q
  2705. RESUME nachhaupt
  2706.  
  2707. datensich:
  2708. CLS
  2709.  LINE (26,28)-(182,44),1,b
  2710.  LOCATE 5,5:PRINT "1. volle Sicherung"
  2711.  LINE (26,52)-(198,68),1,b
  2712.  LOCATE 8,5:PRINT "2. nur Veränderungen"
  2713.  io=0
  2714.  WHILE io<1 OR io>2
  2715.    taste q
  2716.    IF q=129 THEN haupt   
  2717.    IF mausx>25 THEN
  2718.      IF mausx<183 AND mausy>27 AND mausy<45 THEN io=1
  2719.      IF mausx<199 AND mausy>51 AND mausy<69 THEN io=2
  2720.    ELSE
  2721.      io=q-ASC("0")
  2722.    END IF
  2723.  WEND
  2724. GOSUB 8010
  2725. LOCATE 5,5:PRINT "Wohin sollen die Daten gesichert werden ?"
  2726. q1$=""
  2727. WHILE q1$=""
  2728.   LOCATE 6,5:PRINT "Kompletter Pfad: ";:INPUT q1$
  2729. WEND
  2730. IF ASC(q1$)=129 THEN haupt
  2731. q$=komplpfad$
  2732. IF RIGHT$(q1$,1)="/" THEN q1$=LEFT$(q1$,LEN(q1$)-1)
  2733. GOSUB dat1
  2734. IF dr(0)>0 THEN
  2735.   oeffne Pfad$+"Voreinstellung",1,1,0:PRINT "Voreinstellung"
  2736.   FIELD 1,1 AS d$
  2737.   FOR i=0 TO an
  2738.     IF (dr(i)AND 6)>0 THEN LSET d$=CHR$(dr(i)AND 1):PUT 1,i+1:dr(i)=dr(i)AND 251
  2739.   NEXT i:CLOSE 1
  2740.   dr(0)=dr(0)OR 32
  2741. END IF  
  2742. GOSUB dat2
  2743. 17500 
  2744. GOTO haupt
  2745.  
  2746. dat1:   
  2747. GOSUB openlib
  2748. ON ERROR GOTO fehlerausw2
  2749. fhandle& = xOpen&(SADD("con:20/10/600/130/"+CHR$(0)),1005)
  2750. IF fhandle& = 0 THEN
  2751.   PRINT:PRINT  "Fehler im DOS"
  2752.   taste q
  2753.   CALL xClose&(fhandle&)  
  2754.   LIBRARY CLOSE
  2755.   ON ERROR GOTO 0
  2756.   IF an=0 THEN RETURN 16000 :ELSE RETURN haupt
  2757. END IF  
  2758. x=Execute&(SADD("makedir "+q1$+CHR$(0)), 0,fhandle&)
  2759. d1$="comp":d2$="comdat"
  2760. IF INSTR("/:",RIGHT$(q1$,1))=0 THEN q1$=q1$+"/"
  2761. x=Execute&(SADD("makedir "+q1$+d1$+CHR$(0)), 0,fhandle&)
  2762. x=Execute&(SADD("makedir "+q1$+d2$+CHR$(0)), 0,fhandle&)
  2763. d1$=d1$+"/":d2$=d2$+"/"
  2764. IF (dr(0)AND 2)>0 OR io=1 THEN
  2765.   GOSUB dat3
  2766.   x=Execute&(SADD("copy "+q$+d1$+"Index "+q1$+d1$+"Index"+CHR$(0)), 0,fhandle&)
  2767. END IF
  2768. IF (dr(0)AND 8)>0 OR io=1 THEN
  2769.   GOSUB dat3
  2770.   x=Execute&(SADD("copy "+q$+d1$+"Zahlen "+q1$+d1$+"Zahlen"+CHR$(0)), 0,fhandle&)
  2771. END IF
  2772. IF (dr(0)AND 16)>0 OR io=1 THEN
  2773.   GOSUB dat3
  2774.   x=Execute&(SADD("copy "+q$+d1$+"Titel "+q1$+d1$+"Titel"+CHR$(0)), 0,fhandle&)
  2775. END IF
  2776. IF (dr(0)AND 64)>0 OR io=1 THEN
  2777.   GOSUB dat3
  2778.   x=Execute&(SADD("copy "+q$+d1$+"Druckart "+q1$+d1$+"Druckart"+CHR$(0)), 0,fhandle&)
  2779. END IF
  2780. IF (dr(0)AND 128)>0 OR io=1 THEN
  2781.   GOSUB dat3
  2782.   x=Execute&(SADD("copy "+q$+d1$+"Drucker "+q1$+d1$+"Drucker"+CHR$(0)), 0,fhandle&)
  2783. END IF
  2784. ON ERROR GOTO 0
  2785. GOSUB dat3
  2786. FOR j=1 TO an
  2787.   IF io=1 OR (dr(j)AND 6)>0 THEN
  2788.     IF (j MOD 400)=0 THEN FOR x=1 TO 2000:NEXT x
  2789.     LOCATE 20,5:PRINT USING "\                            \";t$(j)
  2790.     qq$=q$+d2$+t$(j)
  2791.     oeffne qq$,1,1,0:CLOSE 1
  2792.     x=Execute&(SADD("copy "+CHR$(34)+qq$+CHR$(34)+" "+CHR$(34)+q1$+d2$+t$(j)+CHR$(34)+CHR$(0)), 0,fhandle&)
  2793.     dr(j)=dr(j) AND 1
  2794.   END IF
  2795. NEXT j
  2796. RETURN
  2797. dat2:
  2798. IF (dr(0)AND 32)>0 OR io=1 THEN
  2799.   x=Execute&(SADD("copy "+q$+d1$+"Voreinstellung "+q1$+d1$+"Voreinstellung"+CHR$(0)), 0,fhandle&)
  2800. END IF
  2801. dr(0)=0
  2802. CALL xClose&(fhandle&)  
  2803. LIBRARY CLOSE
  2804. RETURN
  2805. dat3:
  2806. LOCATE 21,5:PRINT "Bitte Diskette "+q$+" einlegen + Taste"
  2807. taste q
  2808. LOCATE 21,5:PRINT SPACE$(70)
  2809. RETURN
  2810.  
  2811. datenrek:
  2812. CLS
  2813. IF an>0 THEN
  2814.   LOCATE 5,5:PRINT "Achtung ! Bei der der Rekonstruktion der Daten werden aktuellen"
  2815.   LOCATE 6,5:PRINT "Werte gelöscht, und mit denen der letzten Sicherung ersetzt."
  2816.   LOCATE 7,5:PRINT "(d.h. die Rekonstruktion sollte nur dann ausgeführt werden, wenn"
  2817.   LOCATE 8,5:PRINT "sie wirklich notwendig ist, da sonst Daten verloren gehen.)"
  2818.   LOCATE 10,5:PRINT "Cr: weiter      F10: zurück zum Hauptmenü"
  2819.   q=0
  2820.   WHILE q<>13 AND q<>138 AND q<>129
  2821.     taste q
  2822.   WEND
  2823.   IF q=138 OR q=129 THEN haupt
  2824.   CLS
  2825. END IF    
  2826. LOCATE 3,5:PRINT "Datenrekonstruktion" 
  2827. LOCATE 5,5:PRINT "Woher sollen die Daten gelesen werden (Sicherungsdiskette) ?"
  2828. q$=""
  2829. WHILE q$=""
  2830.   LOCATE 7,5:PRINT "Pfad: ";:INPUT q$
  2831. WEND
  2832. IF ASC(q$)=129 THEN haupt
  2833. IF INSTR("/:",RIGHT$(q$,1))=0 THEN q$=q$+"/"
  2834. q=1
  2835. oeffne q$+"comp/Zahlen",1,1,q
  2836. CLOSE 1
  2837.   IF q=1 THEN
  2838.     LOCATE 20,5:PRINT "Falscher Pfad (Taste)":taste q
  2839.     IF an=0 THEN 16000 :ELSE GOTO haupt
  2840.   END IF
  2841. oeffne Pfad$+"Drucker",1,1,0
  2842. CLOSE 1
  2843. OPEN Pfad$+"Drucker" FOR INPUT AS 1
  2844.  INPUT#1,komplpfad$
  2845.  INPUT#1,lib$
  2846. CLOSE 1
  2847.   q1$=komplpfad$
  2848.   IF RIGHT$(q1$,1)="/" THEN q1$=LEFT$(q1$,LEN(q1$)-1)
  2849.   io=1
  2850.   GOSUB dat1
  2851.   GOSUB dat2
  2852. CLEAR ,100000
  2853. GOTO anfang
  2854.  
  2855. openlib:
  2856. ON ERROR GOTO fehlerausw
  2857. q2$=lib$
  2858. opl1: 
  2859. fehler=0
  2860. LIBRARY q2$+"dos.library"
  2861. IF fehler=53 THEN
  2862.   IF q2$=lib$ THEN q2$="LIBS:":GOTO opl1
  2863.   LOCATE 11,5:PRINT "Bitte den Pfad zur DOS Lib eingeben. "
  2864.   LOCATE 12,5:INPUT q2$
  2865.   GOTO opl1
  2866. END IF
  2867. ON ERROR GOTO 0
  2868. RETURN
  2869.  
  2870. initialisierung:
  2871. geszahl=0:bestZust=0:REM wichtig fuer dec
  2872. dg=0:men0=0:men1=0
  2873. n$="":nn$="":ver=0
  2874. xakt=0:t$="":index=0:mausx=-1:mausy=-1
  2875. l$="":laenge=0:o=0:j$="":nr=0:nr$=""
  2876. z=0:z$="":an$="":l=0
  2877. wahl=0:gz=0:stw=0:io=0:az$="":zust=0:anzahl=0
  2878. gesamt=0:fehlend=0:doppelt=0:maximum=0:breite=0:hoehe=0
  2879. x=0:y=0:tt$="":maxnum=0:jj=0:nn=0:ll=0:aj=0:sn=0:ok=0
  2880. zz=0:vanz=0:q1=0:se=0:ii=0:ig=0:b2=0:b3=0:b4=0:b5=0:b6=0:b7=0
  2881. b8=0:b9=0:b10=0:b11=0:b12=0:b13=0:b14=0:b20=0:b21=0:b22=0:b23=0
  2882. b24=0:b25=0:b26=0:b27=0
  2883. fhandle&=0
  2884. RETURN
  2885.  
  2886. nachhaupt:
  2887. ON ERROR GOTO 0
  2888. GOTO haupt
  2889.  
  2890.  
  2891.